Android的supportV7中默认按钮和选中框的颜色设置
来源:互联网 发布:圣兰软件 编辑:程序博客网 时间:2024/05/23 20:41
网上很多更改checkbox勾选框颜色的博客都是互相抄袭的,根本没有任何效果,现在推荐这个博主的博客还是很有效的,我们可以尝试更改当前activity的theme来更改checkbox或者dialog打的默认按钮勾选等默认样式
我们知道,在styles.xml文件里面可以设置主题,在主题中设置的一些颜色,将会应用到默认的AppCompat控件上,从而很简单的就可以保持整个APP在UI上的一致性。下面是一个例子:
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <!-- 状态栏颜色 --> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <!--按钮选中或者点击获得焦点后的颜色--> <item name="colorAccent">@color/colorAccent</item> <!--控制searchView的icon颜色的设置--> <item name="colorControlNormal">@color/colorControlNormal</item> <!--Button按钮正常状态颜色--> <item name="colorButtonNormal">@color/accent_material_light</item> <!--EditText 输入框中字体的颜色--> <item name="editTextColor">@android:color/white</item> <!-- 窗口的背景颜色 --> <item name="android:windowBackground">@android:color/white</item> <!--导航栏上的标题颜色--> <item name="android:textColorPrimary">@color/black</item> <item name="android:listDivider">@drawable/card_list_divider</item> <item name="textAppearanceLargePopupMenu">@style/splashPopUpMenuStyle</item> <item name="textAppearanceSmallPopupMenu">@style/splashPopUpMenuStyle</item></style>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
至于各种控件是如何应用这些颜色设置的,则需要经过更多的尝试了。
比如Activity导航栏默认的图标颜色是colorControlNormal,导航栏的底色是colorPrimary,沉浸式状态栏默认的颜色是colorPrimaryDark;
比如FAB的默认颜色是colorAccent;
比如AppCompatCheckBox默认的选中状态的颜色是colorAccent,而默认的未选择状态的颜色的colorControlNormal;
比如AppCompatSpinner的下拉图标的默认颜色也是colorControlNormal。
……
其实涉及到的主要的就是下面这几个参数:
<item name="colorPrimary">?attr/colorPrimary</item><item name="colorPrimaryDark">?attr/colorPrimaryDark</item><item name="colorAccent">?attr/colorAccent</item><item name="colorControlNormal">?attr/colorControlNormal</item><item name="colorControlActivated">?attr/colorControlActivated</item><item name="colorControlHighlight">?attr/colorControlHighlight</item><item name="colorButtonNormal">?attr/colorButtonNormal</item>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
那么问题来了,如果你使用蓝色的沉浸式状态栏,导航栏上的图标则使用白色,那在这个Activity中使用AppCompatCheckBox的时候,未选择状态就也是白色的,此时如果在白色的背景色下,用户就看不出这是个AppCompatCheckBox了。这时候怎么办?如下图(图中使用的是AppCompatSpinner):
其实很简单,在这个AppCompatCheckBox上使用app:theme=”@style/MyCheckBox”,然后在styles.xml中添加新的
<style name="MyCheckBox" parent="Widget.AppCompat.CompoundButton.CheckBox"> <item name="colorControlNormal">@color/colorControlNormal</item></style>
- 1
- 2
- 3
但是需要注意的是,这样可能引起控件其他默认属性的变化,比如CheckBox的textSize会变成1(不使用app:theme的时候和APP的默认字体大小一样)。
参考:
[android:theme和app:popupTheme的作用,以及在android 3.0以下不起作用问题的解决](http://blog.csdn.net/lovexieyuan520/article/details/48931185)
<link rel="stylesheet" href="http://s.csdnimg.cn/static/markdown/markdown_views.css?v=2.0"> </div>
- Android的supportV7中默认按钮和选中框的颜色设置
- Android的supportV7中默认按钮的颜色设置
- Android 动态设置RadioButton选中和没选中的颜色及设置默认选中某一项
- iOS中 cell的选中颜色以及默认选中行
- Android 中设置ListView选中项的背景颜色
- Android中selector颜色选中设置失败的问题
- android在代码中设置Spinner默认选中的值
- ios中UITableViewCell选中后的颜色设置和背景图片
- XtraGrid GridView设置默认选中的行颜色
- wpf datagrid 样式怎么设置默认选中行的颜色
- ListView中设置默认的选中行
- 设置UITableView中单元格的默认选中
- android中设置ListView的选中的Item的背景颜色(松开后的背景颜色)
- Android RadioGroup中设置默认选中RadioButton 后,选中两个的问题 解决方法
- Android RadioGroup中设置默认选中RadioButton 后,选中两个的问题 解决方法
- Android按钮按下时和弹起时的颜色设置
- 设置tabbaritem的title颜色(选中和未选中)
- Android中颜色的定义和设置
- HttpClient4.5 简单入门实例(一)
- 网络服务
- 生成任意内容任意类型的文件
- C语言学习之%*d的应用
- 关于模版重载函数函数命名冲突的解决方案
- Android的supportV7中默认按钮和选中框的颜色设置
- python用的比较多的字符串处理函数
- 最大子矩阵和
- 设计模式之单例模式
- 使用多线程提高rest服务性能,异步处理rest服务
- 高并发“热点”缓存数据快速“退火”
- 本地电脑--快速备份--dos命令
- 关于跨域的几点处理
- 前端组件Bootstrap4(学习笔记一)