自定义AlertDialog的Title以及两个Button和Content的字体颜色

我们在android中可以很容易的通过上面的代码弹出一个AlertDialog,其中的标题,内容还有按钮的颜色大小等,系统代码中并没有暴露出方法来允许我们自定义他们,可假如有需求,为了突出确定,需要将确定的按钮修改为红色,我们该怎么做呢,或者是需要修改标题颜色等,当然我们可以选择自定义View,在此处我们不讨论这个方法,我们尝试修改原生的AlertDialog的标题,按钮颜色等;假如我们需要修改内容的颜色为蓝色,我们该如何修改呢?既然原生的AlertDialog没有提供修改的方法,那我们可以通过反射来提取到这个控件,然后修改其颜色即可;点开AlertDialog源码我们发现有一个全局的AlertControllerAlertDialog主要就是通过这个类来实现的,我们继续看这个类的源码;在这个类的源码中我们看到了有mTitleViewmMessageView等字段,这些字段就是我们所需要的,我们就可以通过反射来动态修改他们;我们就可以通过反射来修改原生AlertDialog中内容的颜色或者大小;

tryCatch({
    val mAlert = AlertDialog::class.java.getDeclaredField("mAlert")
    mAlert.isAccessible = true
    val mAlertController = mAlert.get(myDialog)
    val mTitle = mAlertController.javaClass.getDeclaredField("mTitleView")
    mTitle.isAccessible = true
    val titleView = mTitle.get(mAlertController)
    (titleView as TextView).setTextColor(ContextCompat.getColor(this@FitReceiptDetailInventoryActivity, R.color.color_green))
})复制代码

通过反射获取私有属性AlertController然后获取Field属性获取实例对象设置isAccessibile为true

即可修改属性值。


个人笔记。。。后期总结。。。


转载于:https://juejin.im/post/5a278b36f265da431523c7ec

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值