我们知道,在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):

Android的supportV7中默认按钮的颜色设置_第1张图片

其实很简单,在这个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的supportV7中默认按钮的颜色设置_第2张图片

参考:
[android:theme和app:popupTheme的作用,以及在android 3.0以下不起作用问题的解决](http://blog.csdn.net/lovexieyuan520/article/details/48931185)

更多相关文章

  1. android studio 添加按钮点击事件的三种方法
  2. android 按钮 背景 文字 自定义
  3. ListView中item点击事件、item保持选中状态以及其他细节
  4. appwidget中使按钮不能用 以及 appwidget初学指导
  5. 72、android状态栏一体化,状态栏改变颜色
  6. Android控件ToggleButton多状态按钮使用详解
  7. Android如何实现5.0以上图片沉浸式状态栏

随机推荐

  1. 为什么iOS比Android更吸引开发者
  2. Android(安卓)桌面角标在各大品牌机型上
  3. 【Android】Android(安卓)Studio实战快速
  4. Android(安卓)ListView拖动时背景变黑的
  5. 在eclipse上开发Android应用程序
  6. NDK开发历程(一):android native code的调试
  7. ANDROID音频系统散记之一:A2dpAudioInterf
  8. Android(安卓)UI开发专题(一) 之界面设计
  9. Android单元测试之Testing和Instrumentat
  10. Android之消息推送实现