Android的supportV7中默认按钮的颜色设置
我们知道,在styles.xml文件里面可以设置主题,在主题中设置的一些颜色,将会应用到默认的AppCompat控件上,从而很简单的就可以保持整个APP在UI上的一致性。下面是一个例子:
至于各种控件是如何应用这些颜色设置的,则需要经过更多的尝试了。
比如Activity导航栏默认的图标颜色是colorControlNormal,导航栏的底色是colorPrimary,沉浸式状态栏默认的颜色是colorPrimaryDark;
比如FAB的默认颜色是colorAccent;
比如AppCompatCheckBox默认的选中状态的颜色是colorAccent,而默认的未选择状态的颜色的colorControlNormal;
比如AppCompatSpinner的下拉图标的默认颜色也是colorControlNormal。
……
其实涉及到的主要的就是下面这几个参数:
<item name="colorPrimary">?attr/colorPrimaryitem><item name="colorPrimaryDark">?attr/colorPrimaryDarkitem><item name="colorAccent">?attr/colorAccentitem><item name="colorControlNormal">?attr/colorControlNormalitem><item name="colorControlActivated">?attr/colorControlActivateditem><item name="colorControlHighlight">?attr/colorControlHighlightitem><item name="colorButtonNormal">?attr/colorButtonNormalitem>
那么问题来了,如果你使用蓝色的沉浸式状态栏,导航栏上的图标则使用白色,那在这个Activity中使用AppCompatCheckBox的时候,未选择状态就也是白色的,此时如果在白色的背景色下,用户就看不出这是个AppCompatCheckBox了。这时候怎么办?如下图(图中使用的是AppCompatSpinner):
其实很简单,在这个AppCompatCheckBox上使用app:theme=”@style/MyCheckBox”,然后在styles.xml中添加新的
<style name="MyCheckBox" parent="Widget.AppCompat.CompoundButton.CheckBox"> <item name="colorControlNormal">@color/colorControlNormalstyle>
但是需要注意的是,这样可能引起控件其他默认属性的变化,比如CheckBox的textSize会变成1(不使用app:theme的时候和APP的默认字体大小一样)。
参考:
[android:theme和app:popupTheme的作用,以及在android 3.0以下不起作用问题的解决](http://blog.csdn.net/lovexieyuan520/article/details/48931185)
更多相关文章
- android studio 添加按钮点击事件的三种方法
- android 按钮 背景 文字 自定义
- ListView中item点击事件、item保持选中状态以及其他细节
- appwidget中使按钮不能用 以及 appwidget初学指导
- 72、android状态栏一体化,状态栏改变颜色
- Android控件ToggleButton多状态按钮使用详解
- Android如何实现5.0以上图片沉浸式状态栏