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构建选择弹窗
positiveButtonTextpositive按钮文本
positiveTextColorpositive按钮文本颜色
negativeButtonTextnegative按钮文本
negativeTextColornegative按钮文本颜色
buttonSizepositive和negative按钮大小
isButtonCenterpositive和negative按钮是否居中
message确认提示弹窗message文本
messageSize确认提示弹窗message字体大小
messageColor确认提示弹窗message字体颜色
isMessageCenter确认提示弹窗message是否居中
titletitle文本
titleSizepositive文本大小
titleColortitle文本颜色
isTitleCentertitle是否居中
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 设置了一个带EditTextview实现输入框的需求。
选择框:通过给AlertDialog 设置了一个带ListViewview 实现列表展示的功能,也可以给选择框设置一个自定义的 BaseAdapter,实现更个性化的效果。

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

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值