前言

本文主要给大家介绍了如何更改Dialog的标题与按钮颜色的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
android.support.v7.app.AlertDialog
在这个类中第一行就定义了如下变量:
final AlertController mAlert;
AlertDialog的功能的具体实现都在这个AlertController内部封装.
修改按钮颜色
1. AlertDialog.getButton
public Button getButton(int whichButton) {
return mAlert.getButton(whichButton);
}
这里的参数whichButton有三种类型:
传入对应的参数即可得到对应的Button
Button btnPositive = (Button)AlertDialog.getButton(DialogInterface.BUTTON_POSITIVE); btnPositive.setTextColor(color);
这种方式只能设置按钮的颜色,而无法设置标题颜色
2 AlertDialog.getWindow
AlertDialog的构造函数如下:
protected AlertDialog(@NonNull Context context, @StyleRes int themeResId) {
super(context, resolveDialogTheme(context, themeResId));
mAlert = new AlertController(getContext(), this, getWindow());
}
这里初始化了AlertController,并传入了getWindow() ,这个getWindow()是AlertDialog继承自Dialog的方法.方法如下:
#Dialog.getWindow()
public @Nullable Window getWindow() {
return mWindow;
}
将这个window对象传入AlertController后,在AlertController源码中可以看到对话框标题和按钮的id,并通过Window.findViewById(id)获取对应的View.
所以这里可以这样得到对话框的标题和按钮:
//标题 TextView tvTitle = (TextView)AlertDialog.getWindow().findViewById(R.id.alertTitle); //按钮 Button btnPositive = (Button)AlertDialog.getWindow().findViewById(R.id.button1);
然后设置所需要的颜色就可以了.这种方法可以修改Dialog的所有设置了id的控件的字体颜色.
3 反射
3.1 首先拿到AlertController对象
Field mAlert = AlertDialog.class.getDeclaredField("mAlert");
mAlert.setAccessible(true);
Object controller = mAlert.get(dialog);
在AlertController内部查找到需要更改字体颜色的标题和按钮
Button mButtonPositive; Button mButtonNegative; Button mButtonNeutral; private TextView mTitleView; private TextView mMessageView;
然后通过反射获取对应控件,修改控件颜色即可
Field mTitleView = controller.getClass().getDeclaredField("mTitleView");
mTitleView.setAccessible(true);
TextView tvTitle = (TextView) mTitleView.get(controller);
tvTitle.setTextColor(Color.GREEN);//更改标题的颜色
三种方式比较起来,第二种是最简单,效率也是最高的
更改Dialog显示的位置
Window window = dialog.getWindow(); WindowManager.LayoutParams lp = window.getAttributes(); lp.gravity = Gravity.BOTTOM; lp.x = 100; lp.y = 100; window.setAttributes(lp);
这里要注意的是,WindowManager.LayoutParams的x和y坐标,看源码注释如下:
/**
* X position for this window. With the default gravity it is ignored.
* When using {@link Gravity#LEFT} or {@link Gravity#START} or {@link Gravity#RIGHT} or
* {@link Gravity#END} it provides an offset from the given edge.
*/
@ViewDebug.ExportedProperty
public int x;
/**
* Y position for this window. With the default gravity it is ignored.
* When using {@link Gravity#TOP} or {@link Gravity#BOTTOM} it provides
* an offset from the given edge.
*/
@ViewDebug.ExportedProperty
public int y;
如果lp.gravity是默认的,那么x和y即使设置了也是无效的.因此x和y需要和lp.gravity搭配使用才有效果.当然lp.gravity也可以单独使用.
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# dialog标题居中
# dialog去掉标题栏
# dialog自定义关闭按钮
# artdialog的图片/标题以及关闭按钮不显示的解决方法
# Android实现点击AlertDialog上按钮时不关闭对话框的方法
# Android使用自定义alertdialog实现确认退出按钮
# AlertDialog点击按钮不消失的实现方法
# Android中AlertDialog 点击按钮后不关闭对话框的功能
# 对话框
# 的是
# 相关内容
# 在这个
# 都在
# 说了
# 不多
# 要注意
# 给大家
# 才有
# 可以看到
# 三种
# 这篇文章
# 谢谢大家
# 最简单
# 所需要
# 第二种
# 有三种
# 就可以
# 方法如下
相关文章:
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
济南网站建设制作公司,室内设计网站一般都有哪些功能?
如何选购建站域名与空间?自助平台全解析
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
婚礼视频制作网站,学习*后期制作的网站有哪些?
如何通过智能用户系统一键生成高效建站方案?
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
建站之星导航配置指南:自助建站与SEO优化全解析
宁波自助建站系统如何快速打造专业企业网站?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
如何选择靠谱的建站公司加盟品牌?
电商网站制作公司有哪些,1688网是什么意思?
岳西云建站教程与模板下载_一站式快速建站系统操作指南
如何选择香港主机高效搭建外贸独立站?
图册素材网站设计制作软件,图册的导出方式有几种?
微信小程序 input输入框控件详解及实例(多种示例)
英语简历制作免费网站推荐,如何将简历翻译成英文?
定制建站策划方案_专业建站与网站建设方案一站式指南
建站主机选哪家性价比最高?
C++如何编写函数模板?(泛型编程入门)
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
如何在IIS中配置站点IP、端口及主机头?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
如何在阿里云部署织梦网站?
javascript基本数据类型及类型检测常用方法小结
如何快速搭建自助建站会员专属系统?
如何获取PHP WAP自助建站系统源码?
建站主机服务器选购指南:轻量应用与VPS配置解析
长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?
如何零基础在云服务器搭建WordPress站点?
建站之星收费标准详解:套餐费用及年费价格表一览
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
C#怎么使用委托和事件 C# delegate与event编程方法
网站制作需要会哪些技术,建立一个网站要花费多少?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
Python文件管理规范_工程实践说明【指导】
TestNG的testng.xml配置文件怎么写
如何在IIS7上新建站点并设置安全权限?
如何快速查询网址的建站时间与历史轨迹?
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
如何通过虚拟机搭建网站?详细步骤解析
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
如何选择高效便捷的WAP商城建站系统?
广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
建站之星后台密码遗忘如何找回?
如何在IIS7中新建站点?详细步骤解析
如何在建站之星绑定自定义域名?
*请认真填写需求信息,我们会在24小时内与您取得联系。