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

来源:互联网 发布:腾讯公司发展数据 编辑:程序博客网 时间:2024/06/04 23:56

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输入框hintinputHintTextColor输入框hint文本字体颜色inputType输入框输入类型hasDivider选择框是否要分割线dividerHeigh选择框分割线高度dividerColor选择框分割线颜色items选择框选择的itemitemColor选择框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



阅读全文
0 0
原创粉丝点击