Styles and Themes

1 概念

1.1 style

  Style是指一个关于组件或窗口的特定显示方式的属性集合,Style.xml资源文件与对应的layout.xml资源文件分开定义。Android中的style使用网页设计的级联方式,使得设计与内容分离。借助style可以完成Layout文件的简化,将layout的所有属性值放到一个名为XXX的style.xml文件中实现

1.2 theme

  Theme是应用到整个Activity,甚至是APP的一种特定设计风格style,而不是仅仅用于某个View。一旦一个是style作为一个theme进行应用,那么意味着这个Activity或app上所有的View都将应用该style。

2 define styles

  • 可以创建多个style文件,但位置必须位于工程目录res/values/;文件名可以任意取,但必须为xml扩展名
  • XXX.xml的style文件的根节点必须为<resources>
  • <style>节点必须实现name节点,name值必须能够唯一标识该style文件   
  • <item>作为<style>的子节点存在,定义View或window的属性值,item的name指定该View属性的名称,型如:<item name="style property">value</item>其中value可以字符串、16进制颜色值、另外一个资源的引用,等等,都是根据具体的View属性来定

(继承了名为TextAppearance   style的Medium属性)

  • <resources>的每个<style>节点都会根据style的name属性值在编译时是转化到application的资源中去
  • <style>节点的parent属性是可选的,表明该style需要从对应的style文件中继承特定的资源。你也可以覆盖该继承资源
  • style文件可以用来定义某个view或者整个Activity,甚至是整个app的显示风格

3 继承style文件

3.1 用parent属性

  parent属性能够完成一个style对于一个已存在(自定义或平台内置)的style,让后根据需要对父style的属性进行添删改,形成需要的style文件

  

  (继承了名为TextAppearance的style所有属性)

3.2 用前缀表示法

  • 如果你需要继承的style名为 parentStyleName,则可以将该style命名为parentStyleName.xxx表示该style继承于上一个style
  • 此方法可以继承多个style,链式继承
  • 注意:此方法只能用于自定义的style,不能用于平台内置style

  

4 style的属性

  • style属性均来源于View的属性值,View的属性值可以直接在layout文件中定义,也可以抽离出来,统一在style中定义,在layout中引用,对于大量界面时,可以精简代码

  

  • 不同View所有的属性不完全一样,如果View所引用的style中存在其不支持的属性,则该View应用其支持属性,忽略不支持属性
  • 存在一些属性不应用于任何View,只是应用于Activity/Application,这些属性都是window开头

5 应用style或theme到UI界面

3.1 应用style到单个View

  引用style在layout文件中,对于ViewGroup该style也只能作用于ViewGroup本身,不能够用于ViewGroup中的子组件

  

3.2 应用style到Activity或者App

  • 一旦Activity或者app中引用style作为主题,那么该Activity或app中所有组件豆将遵循该style,只要View支持对应的属性都将应用,忽略不支持属性
  • Activity与app均在AndroidManifest.xml中定义

用内置theme

  

用自定义Theme

  

  

注意:color作为一个单独的资源存在,原因是windowBackground的值只能支持引用方式,而不能再item中直接给出颜色值

posted on 2015-10-25 00:30  新手酱油  阅读(264)  评论(0编辑  收藏  举报

导航