1. 程式人生 > >安卓的styles.xml檔案和theme的使用

安卓的styles.xml檔案和theme的使用

styles.xml的使用

基礎使用

在一些檢視中,它們具有相同的屬性並且相應屬性具有相同的值,此時可以使用”styles.xml”來統一設定。

定義styles:

<resoures>
    <style name="MyStyle">
        <item name="android:textColor">@android:color/blue</item>
        <item name="android:textSize">18sp</item>
    </style>
</resources
>

使用styles:

<TextView
    style="@style/MyStyle"
    android:text="@string/hello_world"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
</TextView>

styles的繼承

styles支援繼承,甚至支援多繼承。

styles的繼承方式

styles的繼承方式有如下兩種:

1.在style標籤的屬性表中新增“parent”屬性。

<style
name="MyStyle2" parent="@style/MyStyle">

2.使用“.”(點)運算子

<style name="MyStyle.MyStyle2">

styles繼承後的使用

使用時直接引用style的name屬性值

<TextView
    style="@style/MyStyle2"/>

或者

<TextView
    style="@style/MyStyle.MyStyle2"/>

styles和theme

styles和theme定義方法類似,使用起來也差不多,區別在於theme的作用範圍較大,能更改的屬性也較多

theme的定義

    <resources>
        <style name="MyTheme" parent="android:Theme.Holo">
            <item name="android:textColor">#00aaff</item>
        </style>
    </resources>

theme的使用

theme的使用和style類似,只不過theme用於定義Application或者某個Activity的theme

*在AndroidManifest.xml中使用

<application android:theme="@android:style/MyTheme">
    <activity android:theme="@android:style/MyTheme"/>
</application>

*在Activity.java中呼叫

 setTheme(R.style.MyTheme);

Style和Theme的區別

1.由上述程式碼可看出,style主要用於view,而theme則主要用於application和activity
2.在R.attr定義中以window開頭的一些屬性只對theme有效。
3.如果一個應用使用了theme,同時應用下的view也使用了style,那麼當theme與樣式style發生衝突時,style的優先順序高於主題。