安卓封装的AlertDialog是非常好用的一个dialog 。满足平时开发中的大部分工作 。
【android studio透明背景 手机处理gif透明背景】但是毕竟开发中 。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里面
文章插图
文章插图
源码位置在alter_dialog.xml里面
那么我们就可以通过Id去获取了
文章插图
文章插图
至于为什么我上面用android.R.id.message去获取id是因为项目中的ids.xml中已经有了message这个id了
控件获取到了修改字体和颜色 不就是小case了 。
文章插图
文章插图
效果图
文章插图
文章插图
DialogTitle是继承TextView的所有上面的查找Title的控件 我直接转化成TextView
推荐阅读
- 如果可能,日本动漫中你最想学的技能是什么?
- 牛蒡茶可以天天喝吗?
- 动漫《一人之下》周蒙:创出这门绝技?周圣他也配?这到底是什么情况?
- 2021最值得练的SP和SSR 阴阳师最强ssr排行
- 牛蒡茶的功效与作用及禁忌是什么?
- 你最喜欢哪个动漫里的抠脚大叔?
- 百看不厌的5部谍战剧 好看却不火的谍战电视剧
- 有什么漫画让你觉得细思极恐并揭露人性黑暗的呢?
- 最疼痛的病排名 世界最疼痛的十大病排名