Theme和Style说明
- Theme是全局的设计风格。style是局部的设计风格
- Theme是一套UI控件和Activity的样式。可以给Application 和 activity 设置主题。来设置显示界面的样式
- style是针对view来说的,比如 TextView,EditText这些,而Theme必须针对整个activity或者 整个application,你必须在AndroidManifest.xml中 的
或者 中定义 - Style的xml文件要求:
1 | 1. 他的根节点必须 是<resources> |
Theme设置
Theme设置
1 | <manifest xmlns:android="http://schemas.android.com/apk/res/android" |
Theme继承并重写
在value->style里定义主题。可以继承并重写属性
1 | <!-- 兼容主题 深色主题 activity背景默认黑色,字体默认白色--> |
代码中设置Activity主题
- Activity 是 ContextThemeWrapper的子类。而ContextThemeWrapper一个很重要的属性就是Theme
- 实例化一个View必须要 new View(Context context) 。因为View需要把Attributes交给Context的Theme来确定一堆属性(在一个叫TypedArray的容器里)
Theme设置注意事项
- 如果使用 android.support.v7.app.ActionBarActivity 就必须要用兼容主题Theme.AppCompat。
1 | ActionBarActivity 的存在就是为了兼容低API。让他们用上高API的东西。比如Toolbar |
- Holo主题是Android4.0开始谷歌极力推行的Android Design的主题
1 | <style name="AppTheme5" parent="android:Theme.Holo"> |
- Android5.0谷歌又推出了Material Design来取代Android Design
1 | <style name="AppTheme5" parent="android:Theme.Material"> |
Theme来源
在Android Studio中书写主题时都会有自动提示
- 来自Android系统自带的。自带的主题要加上“android:”,如:android:Theme.Black
- 来自兼容包的(比如v7兼容包)。使用v7兼容包中的主题不需要前缀,直接:Theme.AppCompat
- 自己写一个主题
Theme种类
- 所有能应用于应用程序主题都是以“Theme.”开头
- 在v7中有很多以“Base”开头的主题,是一些父主题,不建议直接使用
1 | 系统自带主题: |
Theme风格种类
1 | Black 黑色风格 |
每个主题中定义item分类
https://yq.aliyun.com/articles/72108
颜色、字体、按钮、list、window、Dialog、AlertDialog、Panel、滚动条、文字选中(Text Selection)、Widget样式、Preference样式、search控件样式、ActionBar样式、其他样式