Builder模式设置AlertDialog字体大小、颜色等属性

AlertDialog在开发中很常用,v7包中的AlertDialog界面清爽美观,能满足大多数开发需求,但是有时还是需要更加个性化的需求,比如设置AlertDilog字体大小,颜色等属性。网上有不少文章这方面的文章,一般采用style或者反射来设置,本篇文章是参照源码拿到AlertDialog元素具体的控件对相应的元素进行设置。效果图:

这里写图片描述

项目地址 https://github.com/yannecer/NDialog

使用方法

Gradle

compile 'com.necer.ndialog2:ndialog:1.0.2'

确认提示框

new NDialog(this)
                .setTitle("我是标题")
                .setTitleColor(Color.parseColor("#00c8aa"))
                .setTitleSize(18)
                .setTitleCenter(false)
                .setMessageCenter(false)
                .setMessage("我是meaasge")
                .setMessageSize(16)
                .setMessageColor(Color.parseColor("#00ff00"))
                .setNegativeTextColor(Color.parseColor("#000000"))
                .setPositiveTextColor(Color.parseColor("#ff0000"))
                .setButtonCenter(false)
                .setButtonSize(14)
                .setCancleable(true)
                .setOnConfirmListener(new NDialog.OnConfirmListener() {
                    @Override
                    public void onClick(int which) {
                        //which,0代表NegativeButton,1代表PositiveButton

                        Toast.makeText(MainActivity.this, "点击了::" + which, Toast.LENGTH_SHORT).show();

                    }
                }).create(NDialog.CONFIRM).show();

输入框

new NDialog(this).setTitle("请输入。。。")
                .setInputHintText("hint")
                .setInputHintTextColor(Color.parseColor("#c1c1c1"))
                .setInputText("")
                .setInputTextColor(Color.parseColor("#333333"))
                .setInputTextSize(14)
                .setInputType(InputType.TYPE_CLASS_TEXT)
                .setInputLineColor(Color.parseColor("#00ff00"))
                .setPositiveButtonText("确定")
                .setNegativeButtonText("取消")
                .setNegativeTextColor(Color.parseColor("#c1c1c1"))
                .setOnInputListener(new NDialog.OnInputListener() {
                    @Override
                    public void onClick(String inputText, int which) {
                        //which,0代表NegativeButton,1代表PositiveButton
                        Toast.makeText(MainActivity.this, "输入了::" + inputText, Toast.LENGTH_SHORT).show();
                    }
                }).create(NDialog.INPUT).show();

选择框

new NDialog(this)
                .setItems(new String[]{"aaa", "bbb", "ccc", "ddd"})
                .setItemGravity(Gravity.LEFT)
                .setItemColor(Color.parseColor("#000000"))
                .setItemHeigh(50)
                .setItemSize(16)
                .setDividerHeigh(1)
                .setAdapter(null)
                .setDividerColor(Color.parseColor("#c1c1c1"))
                .setHasDivider(true)
                .setOnChoiceListener(new NDialog.OnChoiceListener() {
                    @Override
                    public void onClick(String item, int which) {
                        Toast.makeText(MainActivity.this, "选择了::" + item, Toast.LENGTH_SHORT).show();

                    }
                }).create(NDialog.CHOICE).show();

支持的属性:
属性     描述
NDialog.CONFIRM     构建确认提示弹窗
NDialog.INPUT     构建输入弹窗
NDialog.CHOICE     构建选择弹窗
positiveButtonText     positive按钮文本
positiveTextColor     positive按钮文本颜色
negativeButtonText     negative按钮文本
negativeTextColor     negative按钮文本颜色
buttonSize     positive和negative按钮大小
isButtonCenter     positive和negative按钮是否居中
message     确认提示弹窗message文本
messageSize     确认提示弹窗message字体大小
messageColor     确认提示弹窗message字体颜色
isMessageCenter     确认提示弹窗message是否居中
title     title文本
titleSize     positive文本大小
titleColor     title文本颜色
isTitleCenter     title是否居中
inputText     输入框预输入文本
inputTextSize     输入框预输入文本字体大小
inputTextColor     输入框预输入文本字体颜色
inputHintText     输入框hint
inputHintTextColor     输入框hint文本字体颜色
inputType     输入框输入类型
hasDivider     选择框是否要分割线
dividerHeigh     选择框分割线高度
dividerColor     选择框分割线颜色
items     选择框选择的item
itemColor     选择框item字体颜色
itemSize     选择框item字体大小
itemGravity     选择框item位置
itemHeigh     选择框item高度
cancleable     弹窗是否可取消

通过 create(int type) 构建不用的dialog,目前有三种
CONFIRM,INPUT,CHOICE。
原理
确认提示框 :在 Dialog OnShowListener 回调中,得到 title 、meaasge 等具体的控件,再设置属性,具体参见从源码看 AlertDialog.getButton(DialogInterface.BUTTON_POSITIVE) 为什么是 null。
输入框:通过给AlertDialog 设置了一个带EditText的view实现输入框的需求。
选择框:通过给AlertDialog 设置了一个带ListView的view 实现列表展示的功能,也可以给选择框设置一个自定义的 BaseAdapter,实现更个性化的效果。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

举儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值