Android xml風(fēng)格和主題文件的編寫,是涉及到整個(gè)程序界面美觀的因素之一。較好的應(yīng)用風(fēng)格和主題,可以實(shí)現(xiàn)美觀而統(tǒng)一的界面,這就猶如Web開發(fā)中的CSS。 Styles和Themes都是資源,存放在res/values文件夾下。 什么是Style,什么是Theme?
Style和Theme的XML文件結(jié)構(gòu)對(duì)每一個(gè)Styles和Themes,給<style>元素增加一個(gè)全局唯一的名字,也可以選擇增加一個(gè) 父類屬性。在后邊我們可以用這個(gè)名字來(lái)應(yīng)用風(fēng)格,而父類屬性標(biāo)識(shí)了當(dāng)前風(fēng)格是繼承于哪個(gè)風(fēng)格。在<style>元素內(nèi)部,申明一個(gè)或者多個(gè)<item>,每 一個(gè)<item>定義了一個(gè)名字屬性,并且在元素內(nèi)部定義了這個(gè)風(fēng)格的值。 風(fēng)格1.在res/values 目錄下新建一個(gè)名叫style.xml的文件。 2.對(duì)每一個(gè)風(fēng)格和主題,給<style>element增加一個(gè)全局唯一的名字,也可以選擇增加一個(gè)父類屬性。在后邊我們可以用這個(gè)名字來(lái) 應(yīng)用風(fēng)格,而父類屬性標(biāo)識(shí)了當(dāng)前風(fēng)格是繼承于哪個(gè)風(fēng)格。 3.在<style>元素內(nèi)部,申明一個(gè)或者多個(gè)<item>,每一個(gè)<item>定義了一個(gè)名字屬性,并且在元素 內(nèi)部定義了這個(gè)風(fēng)格的值。
4.你可以應(yīng)用在其他XML定義的資源。
上面的樣式可以用在單個(gè)view中如:
<EditText id=”@+id/text1″ 現(xiàn)在這個(gè)EditText組件的所表現(xiàn)出來(lái)的風(fēng)格就為我們?cè)谏线叺腦ML文件中所定義的那樣。 編寫一個(gè)簡(jiǎn)單的Style: <?xml version="1.0" encoding="utf-8"?> <resources> <style name="SpecialText" > <item name="android:textSize">18sp</item> <item name="android:textColor">#EC9237</item> </style> <style name="SpecialText2" > <item name="android:textSize">26sp</item> <item name="android:textColor">#FF7F7C</item> <item name="android:fromAlpha">0.0</item> <item name="android:toAlpha">0.0</item> </style> </resources> 應(yīng)用的編寫: <TextView style="@style/SpecialText2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <EditText android:text="@+id/EditText01" style="@style/SpecialText" android:id="@+id/EditText01" android:layout_width="wrap_content" android:layout_height="wrap_content"></EditText> 最終實(shí)現(xiàn)的界面為: 當(dāng)然,Android也有很多預(yù)定義的主題: 主題就像Style一樣,Theme依然在<style>元素里邊申明,也是以同樣的方式引用。不同的是通過(guò)在Android Manifest中定義的<application>和<activity>元素將主題添加到整個(gè)程序或者某個(gè) Activity,但是主題是不能應(yīng)用在某一個(gè)單獨(dú)的View里。 下邊是SDK中主題的一個(gè)例子:(SDK提供的程序會(huì)有Error:no resource found that matches the given name: panelForegroundColor等錯(cuò)誤,目前還不知道怎么解決這些錯(cuò)誤) <?xml version="1.0" encoding="utf-8"?> <resources> <style name="CustomTheme"> <item name="android:windowNoTitle">true</item> <item name="windowFrame">@drawable/screen_frame</item> <item name="windowBackground">@drawable/screen_background_white</item> <item name="panelForegroundColor">#FF000000</item> <item name="panelBackgroundColor">#FFFFFFFF</item> <item name="panelTextColor">?panelForegroundColor</item> <item name="panelTextSize">14</item> <item name="menuItemTextColor">?panelTextColor</item> <item name="menuItemTextSize">?panelTextSize</item> </style> </resources>
注意我們用了@符號(hào)和?符號(hào)來(lái)應(yīng)用資源。@符號(hào)表明了我們應(yīng)用的資源是前邊定義過(guò)的(或者在前一個(gè)項(xiàng)目中或者在Android
框架中)。問(wèn)號(hào)?表明了我們引用的資源的值在當(dāng)前的主題當(dāng)中定義過(guò)。通過(guò)引用在<item>里邊定義的名字可以做到(panelTextColor 在程序中使用主題的方法:
在mainfest.xml中應(yīng)用主題: 編寫的簡(jiǎn)單的一個(gè)Theme: <?xml version="1.0" encoding="utf-8"?> <resources> <style name="CustomTheme" parent="android:Theme.Black"> <item name="android:windowNoTitle">true</item> <item name="android:testSize">14sp</item> <item name="android:textColor">#FFFF0000</item> </style> </resources>
一下列出了其他預(yù)定義的主題: |
|
來(lái)自: shaobin0604@1... > 《Android》