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()之前使用才生效
Android AlertDialog样式调整相关推荐
- android alertdialog 样式,设置AlertDialog的列表样式
虽然谷歌的sdk已经给大家提供了诸多的接口去实现大家想要的界面,但是时常我们还是因为客户的需求,来对界面进行相应的修改,以更加适合业务的需要. 在进行android界面设计的时候,我在使用AlertD ...
- Android 用户界面---样式和主题(Styles and Themes)(二)
样式属性 理解了样式是如何定义的之后,就需要学习<item>元素都定义了那些有效的样式属性类型.你可能已经熟悉了像layout_width和textColor属性,但是还有更多的可以使用的 ...
- Android AlertDialog 对话框开启和关闭输入法问题
Android AlertDialog 对话框开启和关闭输入法问题 AlertDialog 对话框是android jar包自带的对话框,说实话 真的很丑,黑白相间,不是很推荐使用.大多时候 特别是项 ...
- android 调整字体,android设置:调整字体大小
在手机的设置中,我可以全局更改应用的字体大小.android设置:调整字体大小 设置>显示>字体大小 我可以做的字体大小(小,中,大,非常大),也看过Java和(如果适用).只为我的应用程 ...
- Android屏幕方向调整的两种方式
Android屏幕方向调整 作者:坚果 公众号:"大前端之旅" 华为云享专家,InfoQ签约作者,阿里云专家博主,51CTO博客首席体验官,开源项目GVA成员之一,专注于大前端技术 ...
- android自定义样式大全:shape,selector,layer-list,style,动画全部内容
原文:http://keeganlee.me/post/android/20150830 以下摘取了部分内容: shape 一般用shape定义的xml文件存放在drawable目录下,若项目没有该目 ...
- Android自定义样式
Android自定义样式 1.AndroidManifest.xml android:theme="@style/Theme.CustomDialog 样式要用:@style <?xm ...
- android 通知栏样式_Android通知样式
android 通知栏样式 We've discussed and implemented basic Notifications in this post. In this tutorial, we ...
- H5页面rem兼容适配及华为样式调整
H5页面rem兼容适配 $(document).ready(function(){//rem兼容var winW = $(window).width();var constant = winW/6.4 ...
最新文章
- 理解 Android Build 系统
- 关于window.location可以获取的信息
- Elasticsearch自定排序插件实现
- laravel进阶系列--通过事件和事件监听实现服务解耦
- 前端学习(1889)vue之电商管理系统电商系统之绘制用户列表组件的基本布局
- Android入门(一) | Android Studio的配置与使用
- struts2--文件上传大小
- windows快速关闭有效方法2则
- 计算机内部信号表现形式,2021山西特岗教师招聘考试:信息技术学科基础考点归纳六...
- 2017ICPC北京 J:Pangu and Stones(区间DP)
- 最新CPC客户端安装教程,亲试有效
- PHP实现生成二维码的示例代码
- 电脑有网,microsoft edge浏览器无法上网
- Java岗面试题--Java基础(日积月累,每日三题)
- win10系统AMD显卡OBS录屏黑屏解决方法
- 浅谈策略交易、系统交易和程式交易
- expdp和impdp备份数据库(数据泵备份)
- P1598垂直柱状图
- 腾讯云服务器Ubuntu系统如何使用 root 用户远程登录
- HTTPS是怎么防止劫持的