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()之前使用才生效

Android AlertDialog样式调整相关推荐

  1. android alertdialog 样式,设置AlertDialog的列表样式

    虽然谷歌的sdk已经给大家提供了诸多的接口去实现大家想要的界面,但是时常我们还是因为客户的需求,来对界面进行相应的修改,以更加适合业务的需要. 在进行android界面设计的时候,我在使用AlertD ...

  2. Android 用户界面---样式和主题(Styles and Themes)(二)

    样式属性 理解了样式是如何定义的之后,就需要学习<item>元素都定义了那些有效的样式属性类型.你可能已经熟悉了像layout_width和textColor属性,但是还有更多的可以使用的 ...

  3. Android AlertDialog 对话框开启和关闭输入法问题

    Android AlertDialog 对话框开启和关闭输入法问题 AlertDialog 对话框是android jar包自带的对话框,说实话 真的很丑,黑白相间,不是很推荐使用.大多时候 特别是项 ...

  4. android 调整字体,android设置:调整字体大小

    在手机的设置中,我可以全局更改应用的字体大小.android设置:调整字体大小 设置>显示>字体大小 我可以做的字体大小(小,中,大,非常大),也看过Java和(如果适用).只为我的应用程 ...

  5. Android屏幕方向调整的两种方式

    Android屏幕方向调整 作者:坚果 公众号:"大前端之旅" 华为云享专家,InfoQ签约作者,阿里云专家博主,51CTO博客首席体验官,开源项目GVA成员之一,专注于大前端技术 ...

  6. android自定义样式大全:shape,selector,layer-list,style,动画全部内容

    原文:http://keeganlee.me/post/android/20150830 以下摘取了部分内容: shape 一般用shape定义的xml文件存放在drawable目录下,若项目没有该目 ...

  7. Android自定义样式

    Android自定义样式 1.AndroidManifest.xml android:theme="@style/Theme.CustomDialog 样式要用:@style <?xm ...

  8. android 通知栏样式_Android通知样式

    android 通知栏样式 We've discussed and implemented basic Notifications in this post. In this tutorial, we ...

  9. H5页面rem兼容适配及华为样式调整

    H5页面rem兼容适配 $(document).ready(function(){//rem兼容var winW = $(window).width();var constant = winW/6.4 ...

最新文章

  1. 理解 Android Build 系统
  2. 关于window.location可以获取的信息
  3. Elasticsearch自定排序插件实现
  4. laravel进阶系列--通过事件和事件监听实现服务解耦
  5. 前端学习(1889)vue之电商管理系统电商系统之绘制用户列表组件的基本布局
  6. Android入门(一) | Android Studio的配置与使用
  7. struts2--文件上传大小
  8. windows快速关闭有效方法2则
  9. 计算机内部信号表现形式,2021山西特岗教师招聘考试:信息技术学科基础考点归纳六...
  10. 2017ICPC北京 J:Pangu and Stones(区间DP)
  11. 最新CPC客户端安装教程,亲试有效
  12. PHP实现生成二维码的示例代码
  13. 电脑有网,microsoft edge浏览器无法上网
  14. Java岗面试题--Java基础(日积月累,每日三题)
  15. win10系统AMD显卡OBS录屏黑屏解决方法
  16. 浅谈策略交易、系统交易和程式交易
  17. expdp和impdp备份数据库(数据泵备份)
  18. P1598垂直柱状图
  19. 腾讯云服务器Ubuntu系统如何使用 root 用户远程登录
  20. HTTPS是怎么防止劫持的

热门文章

  1. 测试2:编写测试用例的方法
  2. 自制香浓芝麻酱的做法,重庆顶香味的老师傅手艺
  3. DDD 系列(一)Domain Primitive
  4. 使用MapReduce对豆瓣的数据评分进行排序,最终只要:电影名,评分 两个字段。(温馨提示:数据需要去重)
  5. SPI Core 寄存器简介
  6. 域名批量查询备案工具
  7. 没有解决方案,不要瞎提建议
  8. 使用批处理文件来批量创建文件夹
  9. 小程序开发,小程序代理,小程序创业
  10. 7大细节预示你面试成功