主题
可以把主题看作是样式的加强版本。同样是定义一套公共主题属性,样式属性需要逐个添加,而主题属性则会自动应用于整个应用中。
默认主题
新建的Android项目都自带默认主题,找到并打开AndroidManifest.xml文件可以看到application标签下的theme属性,如下图所示:
theme属性指向的主题叫AppTheme,定义在styles.xml文件中。
在styles.xml文件中查看AppTheme主题
AppCompat库自带三大主题:
- Theme.AppCompat :深色主题
- Theme.AppCompat.Light:浅色主题
- Theme.AppCompat.Light.DarkActionBar:带深色工具栏的浅色主题
上图中的三个主题属性适用于所有使用同一主题的组件:
- cololrPrimary:主要用来设置工具栏背景色,由于应用名称是显示在工具栏上的,也可以成为应用品牌色。
- colorPrimaryDark:用于屏幕顶部的状态栏(注意只有Lollipop以后的系统支持状态栏主题色,对于之前的系统,无论指定什么主题颜色,状态栏都是不变的黑色)
- colorAccent:主要用于给EditText这样的组件着色
覆盖主题属性
想要更改应用程序中的某个控件的属性,首先需要确定这个属性名称是什么,对于一些不确定的属性名,需要采取向上追溯的方法,找出主题继承的源头,然后凭感觉挑选一个验证猜想。比如在styles文件中选择Theme.AppCompat.Light.DarkActionBar,ctrl+B跳转到定义的文件,依次查找父主题,直到查找到目标属性。还有一点需要注意的是,找到属性名之后在引用的时候需要添加android:前缀,因为这些主题包含在Android操作系统中。
有一些属性名比如textColor,textSize,这些都知道的就不需要再寻找。只需要寻找那些我们不确定的。