android studio透明背景 手机处理gif透明背景

安卓封装的AlertDialog是非常好用的一个dialog 。满足平时开发中的大部分工作 。
【android studio透明背景 手机处理gif透明背景】但是毕竟开发中 。dialog的样式必须要和app主题相符合 。这就需要修改dialog的样式 。
但是dialog并没有提供改变样式的方法 。这就要我们自己去弄了 。
网上提供了很多 。有用style 有用java 反射去获取控件的 。
但是研究源码可以看到 。其实可以用代码去设置 。
先看看不作任何修改的时候 。alterdialog的显示 。
ps:(Button可以在style中修改可以通过查看源码的方法找到 。他的style里面button颜色对应的字段就是colorAccent)

android studio透明背景 手机处理gif透明背景

文章插图

android studio透明背景 手机处理gif透明背景

文章插图
android studio透明背景 手机处理gif透明背景

文章插图

android studio透明背景 手机处理gif透明背景

文章插图
android studio透明背景 手机处理gif透明背景

文章插图

android studio透明背景 手机处理gif透明背景

文章插图
android studio透明背景 手机处理gif透明背景

文章插图

android studio透明背景 手机处理gif透明背景

文章插图
android studio透明背景 手机处理gif透明背景

文章插图

android studio透明背景 手机处理gif透明背景

文章插图
当我们要修改title 或者message 或者button的颜色的时候 。alterdialog并没有提供方法 。
但是研究源码可以看到alterDialog提供了getButton();
android studio透明背景 手机处理gif透明背景

文章插图

android studio透明背景 手机处理gif透明背景

文章插图
源码在AlterDialog.class里面
android studio透明背景 手机处理gif透明背景

文章插图

android studio透明背景 手机处理gif透明背景

文章插图
源码位置在AlertController.class里面
原来这样就可以获取Button了 。那么Button的字体和颜色就不成什么问题了 。
注意必须dialog.show()之后才可以获取到Button不然获取到的Button为空的 。
因为返回的参赛如mButtonPositive实例化是在setupButtons这个方法里面 。而这个方法只有alterDialog在show的时候才会调用
android studio透明背景 手机处理gif透明背景

文章插图

android studio透明背景 手机处理gif透明背景

文章插图
源码位置在AlertController.class里面
那么问题来了message和title呢 。alterDialog并没有提供这个方法 。这个怎么获取 。
其他上面Button的实例化已经提供了一个方法 。看图
android studio透明背景 手机处理gif透明背景

文章插图

android studio透明背景 手机处理gif透明背景

文章插图
他的Button是通过findById去获取的 。那么我们title和message不一样可以用findById么 。
ctrl+鼠标左键 。查看布局源码 。找到title和message的id 。如图
android studio透明背景 手机处理gif透明背景

文章插图

android studio透明背景 手机处理gif透明背景

文章插图
源码位置在alter_dialog.xml里面
android studio透明背景 手机处理gif透明背景

文章插图

android studio透明背景 手机处理gif透明背景

文章插图
源码位置在alter_dialog.xml里面
那么我们就可以通过Id去获取了
android studio透明背景 手机处理gif透明背景

文章插图

android studio透明背景 手机处理gif透明背景

文章插图
至于为什么我上面用android.R.id.message去获取id是因为项目中的ids.xml中已经有了message这个id了
控件获取到了修改字体和颜色 不就是小case了 。
android studio透明背景 手机处理gif透明背景

文章插图

android studio透明背景 手机处理gif透明背景

文章插图
效果图
android studio透明背景 手机处理gif透明背景

文章插图

android studio透明背景 手机处理gif透明背景

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

推荐阅读