zoukankan      html  css  js  c++  java
  • 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中直接给出颜色值

  • 相关阅读:
    Got05
    Git07
    Git09
    Git11
    Git10
    Git13
    Git12
    Git14
    Listview点击跳转页面
    《三个和尚》观后感
  • 原文地址:https://www.cnblogs.com/penghuster/p/4908106.html
Copyright © 2011-2022 走看看