1.2Android主题、样式

本篇文章将介绍Android项目中主题样式的定义和使用,后面会介绍实际 app 中改变主题或使用夜间模式的功能是如何实现的。


样式及主题简介



样式

  • 样式是给 View 或 Window 指定外观和格式的属性集合。样式能够指定如高、边距、字体颜色、字体尺寸、背景颜色等属性。样式被定义在一个与布局 XML 文件分开的XML资源文件中。
  • Android 中的样式与 Web 设计中的层叠式样表类似,允许与内容分开设计。

没有使用样式的 view :

 

使用了样式的 view :


1.2Android主题、样式_第1张图片
TextView 的对比展示

上例中所有的样式相关的属性都被从布局 XML 中删除了,并且把这些样式放到了一个叫做 myStyle 的 XML 样式定义中,然后把它设置给 style 属性。

主题

主题是应用于整个** Activity 应用程序 **的样式,而不是一个独立的 View 对象。当一个样式被用作主题时, Activity 或应用程序中的每个 View 对象都会使用它所支持的每个样式属性。例如,把相同的myStyle样式用作一个 Activity 的主题,那么这个 Activity 内的所有文本都会变成上图中使用了样式的字体。

整个 App 如何引用主题:

在清单文件的节点中添加android:theme="@style/AppTheme"引用


    
        
            
            
        
    

单个 Activity 如何引用主题

在清单文件的节点中添加android:theme="@style/AppTheme"引用


    
        
        
    

常用的主题

Android 4.0 推出了Android Design,5.0 推出了 Material Design

1.2Android主题、样式_第2张图片
Android 4.0 与 Android 5.0 主题对比

** Holo 与 Material 的对比:**

1.2Android主题、样式_第3张图片
Android 4.0 Holo主题
1.2Android主题、样式_第4张图片
Android 5.0 Material主题

定义样式

  • 要创建一个样式,就要把一个 XML 文件保存项目目录的 res/values 目录中。 XML 文件的名字是任意的,但不能使用中文及大写字母,并且保存在 res/values 文件夹中。
  • XML 文件的根节点必须是
  • 对于要创建的样式,都要在这个 XML 文件中添加一个




    元素的每个子元素在编译时都要被转换成一个应用程序资源对象,通过

    如果想要继承自己定义的样式,就不必使用parent属性,但是** 要把想要继承的样式名做新样式名的前缀 **(用点分开)。如,要创建一个新的继承上面定义的 myStyle 样式的样式,但是要使用红色的文字,可以设计以下新样式:

     
    

    注意在

    注意:** 前缀继承法 只对 自定义样式 **有效。不能用这种方法来继承Android内置的样式。要引用内置的样式,就必须使用parent属性。

    版本兼容

    主题适配:

    1. 在 values/style 下声明一个 default theme
    2. 在 values-v11 下声明支持** api 11 **及以上版本的 Theme
    3. 在 values-v14 下声明支持** api 14 **及以上版本的 Theme
    4. 在 values-v21 下声明支持** api 21 **及以上版本的 Theme

    support兼容:
    使用前提是必须在 Module 的 build.Gradle 下加载 support 包
    compile 'com.android.support:appcompat-v7:25.0.0'
    并继承AppCompatActivity

    1.2Android主题、样式_第5张图片
    appcompat-v7 包兼容

    问题


    ?查找当前主题
    @查找当前主题的属性

你可能感兴趣的:(1.2Android主题、样式)