• Android AlertDialog样式调整


    Dialog样式调整

    安卓封装的AlertDialog是非常好用的一个dialog,满足平时开发中的大部分工作。

    但是毕竟开发中,dialog的样式必须要和app主题相符合,这就需要修改dialog的样式。

    但是dialog并没有提供改变样式的方法,这就要我们自己去弄了。

    网上提供了很多,有用style 有用java 反射去获取控件的。

    但是研究源码可以看到,其实可以用代码去设置。

    先看看不作任何修改的时候,alterdialog的显示。

    ps:(Button可以在style中修改可以通过查看源码的方法找到,他的style里面button颜色对应的字段就是colorAccent)

    当我们要修改title 或者message 或者button的颜色的时候,alterdialog并没有提供方法。

    但是研究源码可以看到alterDialog提供了getButton();

    源码在AlterDialog.class里面

    源码位置在AlertController.class里面

    原来这样就可以获取Button了,那么Button的字体和颜色就不成什么问题了。

    注意必须dialog.show()之后才可以获取到Button不然获取到的Button为空的。

    因为返回的参赛如mButtonPositive实例化是在setupButtons这个方法里面,而这个方法只有alterDialog在show的时候才会调用

    源码位置在AlertController.class里面

    那么问题来了message和title呢,alterDialog并没有提供这个方法,这个怎么获取,

    其他上面Button的实例化已经提供了一个方法,看图

    他的Button是通过findById去获取的,那么我们title和message不一样可以用findById么。

    ctrl+鼠标左键,查看布局源码,找到title和message的id。

    源码位置在alter_dialog.xml里面

    那么我们就可以通过Id去获取了

    至于为什么我上面用android.R.id.message去获取id是因为项目中的ids.xml中已经有了message这个id了

    控件获取到了修改字体和颜色 不就是小case了。

    效果图

    DialogTitle是继承TextView的所有上面的查找Title的控件 我直接转化成TextView

    多研究源码收获还是很多的。

    alertDialog.setOnShowListener(dialog -> {
                alertDialog.getButton(DialogInterface.BUTTON_POSITIVE)
                        .setBackground(mContext.getDrawable(R.drawable.alert_button_red_freeme));
                alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE)
                        .setTextColor(mContext.getColor(R.color.textColorWhite)); 			  ((TextView)alertDialog.findViewById(android.R.id.message)).setTextColor(mContext.getColor(R.color.textColorWhite));
                        
    需要在alertDialog.show()之前使用才生效
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    Rt-Thread 移植6--多线程(KF32)
    ESP8266-Arduino编程实例-三路红外寻迹传感器驱动
    自编码器AE全方位探析:构建、训练、推理与多平台部署
    FPGA设计时序约束八、others类约束之Set_Case_Analysis
    Mysql-varchar和text的区别
    Android 系统启动 <zygote 进程> 笔记【2】
    Linux学习笔记5-GPIO(3)
    “卖身”英伟达失败后,Arm 又被高通看上?
    python 协程 (概念+示例代码)
    【考研复试】计算机相关专业面试英语自我介绍范文(一)
  • 原文地址:https://blog.csdn.net/weixin_44008788/article/details/126491464