标签:
style是一些属性值得集合,这些属性值用来指定一个view 或者 window 的外观和格式。style可以只指定height,padding,font color,font size,background color,和很多其他属性。style 定义在xml资源文件中,与layout xml 文件独立开的。android中的style与web中的css有相似的设计哲学-允许设计样式和内容的分离。
例如,使用style,你可以将这样的 layout XML:
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="#00FF00" android:typeface="monospace" android:text="@string/hello"/>
转换如下的代码:
<TextView style="@style/CodeFont" android:text="@string/hello" />
所有与样式相关的属性都从layout XML 中移除了,放入了一个叫CodeFont的style中了,这个style被控件的样式属性中引用了。你可以在接下来的部分看到这个style。
theme 是被整个 activity 或者app,而不是单个view(就像上面的例子)引用的style。当一个style被用作theme时,所有style指定的属性并且被activity或者app中的每个view所支持的属性,将会被引用。例如,你可以应用像CodeFont这样的style作为theme到一个Activity中,然后Activity中所有的文字都会变成green monospace字体。
你只需要将XML文件保存在项目的res/values/目录下,就可以创建style。XML文件的名字是任意指定的,但是文件的拓展名必须是.xml 并且必须被保存在res/values/文件夹下。
在文件中添加<style>元素,所有的style中的name属性是style的唯一的标识(这个属性是必须的)。接着为每个style的所指定的属性添加一个<item>元素,元素的name用来声明你想定义的style属性,同时给出属性的值(值是必须的)。item的值可以是一个有特殊含义的字符串,一个十六进制的颜色值,其他资源类型的引用,或者style属性相关的值。下面是单个style文件的例子:
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="CodeFont" parent="@android:style/TextAppearance.Medium"> <item name="android:layout_width">fill_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:textColor">#00FF00</item> <item name="android:typeface">monospace</item> </style> </resources>
在编译时,<resources>的所有子元素都被转换为一个app的资源对象,可以使用在<style>元素定义的name值引用这个对象。例子里面的style能够在一个XML布局文件里面用 @style/CodeFont来引用(示例在上面的介绍中)。
<style>元素的parent属性是可选的,用来指定继承自其它资源ID中的样式。如果需要你也可以在<style>中覆盖继承来的样式。
注意,在Activity或者app中使用的style和为view定义的style在XML文件中的定义是完全一样的。例如上面例子中的style可以定义单个View的样式或者在Activity和app中用作theme。我们将在后面讨论如何使用style来定义单个style的样式或者用作app的theme。
(翻译整理自https://developer.android.com/intl/zh-cn/guide/topics/ui/themes.html#DefiningStyles)
android api 指南-Styles and Themes
标签:
原文地址:http://www.cnblogs.com/fooler/p/4841564.html