样式资源
样式资源定义了用户界面(UI)的格式和外观。样式能被应用到单独的View (通过置入layout 文件),或者整个Activity及应用程序(通过置入manifest文件)。
关于创建及应用样式的更多信息,请参阅应用样式和主题。
注意:样式是简单类型资源,是用名称(name)属性(而非XML文件名)来直接引用的。因此,在一个XML文件里,可以把样式资源和其他简单类型资源一起放入一个<resources>元素下。
文件位置
res/values/filename.xml
文件名可随意指定。元素的名称name将被用作资源ID。
资源引用
XML代码: @[package:]style/style_name
语法:
<resources>
<style name="style_name" parent="@[package:]style/style_to_inherit">
<item name="[package:]style_property_name">style_value</item>
</style>
</resources>
<resources> 元素
必填项。必须是根元素。
无属性。
<style> 元素
定义单个样式。包含<item>元素。
属性:
name
String类型。必填项。样式的名称,作为资源ID应用到View、Activity或应用程序。
parent
Style资源。本样式的父资源,将继承其Style属性。
<item> 元素
为样式定义单个属性。必须是<style> 元素的子元素。
属性:
name
属性资源。必填项。指定样式属性的名称,必要的话带上包(package)前缀(比如android:textColor)。
示例
样式XML文件(存放在res/values/):
<resources>
<style name="CustomText" parent="@style/Text">
<item name="android:textSize">20sp</item>
<item name="android:textColor">#008</item>
</style>
</resources>
应用以上样式到TextView的XML文件(存放在res/layout/):
<EditText
style="@style/CustomText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello, World!" />
style的继承
1.加上parent
<style name="TextViewStyle2" parent="@style/TextViewStyle1">
<item name="android:layout_width">400dp</item>
</style>
2.加点
<style name="TextViewStyle1.test">
<item name="android:layout_width">800dp</item>
</style>
还可以多继承:
<style name="TextViewStyle1.test.test">
<item name="android:layout_width">1200dp</item>
</style>
关于style文件使用过程的优先级问题。比如说我们在style文件中的定义的文件字体大小是10sp,并且我们给我们的文本设置了这种style,但是我们现在只想让我们的字体大小发生改变,而不想改变style定义的其他属性(也就是说没必要重写style文件)。我们可以直接在布局文件中控件的属性里重写这个属性即可。因为在布局文件中定义的属性的优先级>我们在style中定义的属性。