样式资源

样式资源定义了用户界面(UI)的格式和外观。样式能被应用到单独的View (通过置入layout 文件),或者整个Activity及应用程序(通过置入manifest文件)。

关于创建及应用样式的更多信息,请参阅应用样式和主题。

注意:样式是简单类型资源,是用名称(name)属性(而非XML文件名)来直接引用的。因此,在一个XML文件里,可以把样式资源和其他简单类型资源一起放入一个<resources>元素下。

文件位置

res/values/filename.xml

文件名可随意指定。元素的名称name将被用作资源ID。

资源引用

XML代码: @[package:]style/style_name

语法:

<?xml version="1.0" encoding="utf-8"?>
<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/):

<?xml version="1.0" encoding="utf-8"?>
<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/):


<?xml version="1.0" encoding="utf-8"?>
<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中定义的属性。