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. nginx静态资源分离部署

    修改nginx.conf文件,用于nginx处理静态资源. 主要配置如下(在server配置中加入location配置即可): server { listen 80; server_name 123. ...

  2. 启动C:\Windows\System32\logiLDA.DLL时出现问题,找不到指定模块

    环境:windows8.1专业版 问题:启动C:\Windows\System32\logiLDA.DLL时出现问题,找不到指定模块 每次开机都会弹出上图所示的信息. 经过查找是罗技鼠标驱动的问题:而 ...

  3. CityEngine 2013部署安装

    安装环境: windows8.1 专业版 已安装arcgis10.2 2的授权方式也同样分为:单机许可和浮动 许可.单机许可是将许可部署在本机直接使用:浮动许可是部署到服务器上通过IP地址连接,可借出 ...

  4. MyBatis的动态SQL操作--删除

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUYAAAC/CAIAAAANX+LCAAAYvElEQVR4nO2dWWycV9nHDyC6UEGBGy

  5. 96. Unique Binary Search Trees

    题目: Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For e ...

  6. mysql concat和group_concat

    mysql concat(str1,str2...)连接两个字符串,(数字也是可以的,会转成字符串) MySQL的concat函数在连接字符串的时候,只要其中一个是NULL,那么将返回NULL mys ...

  7. Android开源滤镜 仿instagram

    前段时间做一个项目的时候发现一个不错的滤镜库,是仿Instagram效果的,能够实现Lomo在内的十几种滤镜效果,git地址是: https://github.com/beartung/insta-f ...

  8. poj 3026 Borg Maze (最小生成树+bfs)

    有几个错误,调试了几个小时,样例过后 1Y. 题目:http://poj.org/problem?id=3026 题意:就是让求A们和S的最小生成树 先用bfs找每两点的距离,再建树.没剪枝 63MS ...

  9. hud 3336 count the string (KMP)

    这道题本来想对了,可是因为hdu对pascal语言的限制是我认为自己想错了,结果一看题解发现自己对了…… 题意:给以字符串 计算出以前i个字符为前缀的字符中 在主串中出现的次数和 如: num(aba ...

  10. 剑指Offer:打印从1到最大的n位数

    题目:输入数值n,按顺序打印从1到最大的n位数,例如输入n=3,则从1,2,3,一直打印到999 陷阱:若使用循环遍历 1- 999...9 并依次输出,当位数n过大时,无论将其存入int或long或 ...