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中直接给出颜色值

Styles and Themes的更多相关文章

  1. Android篇---Styles和Themes常见用法可能疑点小结

    1.style和theme的区别: 简而言之,style指的就是安卓中一个UI控件的样式,而themes指的是安卓中一个activity界面或者整个安卓应用整体的样式.theme的范围比style的范 ...

  2. Styles and Themens(5)样式文件Style.xml中各元素的含义

    Style Resource See also Styles and Themes A style resource defines the format and look for a UI. A s ...

  3. Android-Styles and Themes [From API Guide]

    This blog was opened 5 months ago and it has 57 posts now,but the poor thing is by now no one has co ...

  4. Styles and Themens(3)android所有主题表

    The Android platform provides a large collection of styles and themes that you can use in your appli ...

  5. Styles and Themens(1)详述

    Styles and Themes IN THIS DOCUMENT Defining Styles Inheritance Style Properties Applying Styles and ...

  6. 转:看看 Delphi XE2 为 VCL 提供的 14 种样式

    http://www.linuxso.com/linuxbiancheng/8889.html 其实只提供了 个 vsf 样式文件, 还有默认的 Windows 样式, 共 种. 在空白窗体上添加 L ...

  7. Android高手速成--第四部分 开发工具及测试工具

    第四部分 开发工具及测试工具 主要介绍和Android开发工具和测试工具相关的开源项目. 一.开发效率工具 Json2Java根据JSon数据自动生成对应的Java实体类,还支持Parcel.Gson ...

  8. User interface

    Styles and Themes value/style <style name="CodeFont" parent="@android:style/TextAp ...

  9. DateTimePicker如何与Delphi自带Style同步

    Delphi 的 DateTimePicker 组件有一个CalColors属性,可以设置 DropDown 打开的日历节目的风格.但如果不使用 Delphi 自带的 Style,在这里设置属性看不到 ...

随机推荐

  1. aop aspect

    所以“<aop:aspect>”实际上是定义横切逻辑,就是在连接点上做什么,“<aop:advisor>”则定义了在哪些连接点应用什么<aop:aspect>.Sp ...

  2. QT插件开发方式(作者有RemOjbects文档翻译(48)篇)

    创建一个QT的库项目,删除自动生成的.h和.cpp文件,添加一个接口定义.h文件和一个接口实现类(一个.h一个.cpp).代码如下: 1.接口文件源码 #ifndef PLUGININTERFACE_ ...

  3. WPF之给使用了模板的MenuItem添加快捷操作

    说在前面: WPF中给按钮或者是具备Command等元素实现快捷键其实是非常简单的,例子如下: <Button Content="_Test" Click="But ...

  4. 102. Binary Tree Level Order Traversal

    题目: Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to ri ...

  5. python函数--传参

    一.位置参数 二.关键字参数 三.默认参数 四.任意数量的位置参数: 1. *x 2. 传入的多个参数,最终合并成一个元组 3. 之后的参数必须用关键字参数 五.任意数量的关键字参数 1. **x 2 ...

  6. GB2312 简体中文编码表

    GB 2312中对所收汉字进行了“分区”处理,每区含有94个汉字/符号.这种表示方式也称为区位码. 01-09区为特殊符号. 16-55区为一级汉字,按拼音排序. 56-87区为二级汉字,按部首/笔画 ...

  7. 【转】Java多线程学习

    来源:http://www.cnblogs.com/samzeng/p/3546084.html Java多线程学习总结--线程概述及创建线程的方式(1) 在Java开发中,多线程是很常用的,用得好的 ...

  8. poj1925Spiderman(dp)

    链接 确实是破题 按复杂度估计怎么着也不能按坐标D 啊 网上的代码交上去还TLE 无语了  多次TLE之后终于看到一次WA..好高兴 以横坐标进行DP dp[j] = min(dp[j],dp[2*x ...

  9. 关于高斯消元解决xor问题的总结

    我觉得xor这东西特别神奇,最神奇的就是这个性质了 A xor B xor B=A 这样就根本不用在意重复之类的问题了 关于xor的问题大家可以去膜拜莫队的<高斯消元解XOR方程组>,里面 ...

  10. php简单实现MVC

    在PHP中使用MVC越来越流行了,特别是在一些开源的框架当中.MVC足以应对大多数的情况,但还有一些情况是其不太适合的,如比较简单的个人博客,对于只有几百篇文章量级的博客,使用MVC让人觉得有些太复杂 ...