如何新建自定義的風格和主題:android
.在res/values 目錄下新建一個名叫style.xml的文件。增長一個<resources>根節點。
2.對每個風格和主題,給<style>element增長一個全局惟一的名字,也能夠選擇增長一個父類屬性。在
後邊咱們能夠用這個名字來應用風格,而父類屬性標識了當前風格是繼承於哪一個風格。
3.在<style>元素內部,申明一個或者多個<item>,每個<item>定義了一個名字屬性,而且在元素內部定
義了這個風格的值。
4.你能夠應用在其餘XML定義的資源。
-------------------------------------------------------------------------------------------
-
下邊是一個申明風格的實例:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="SpecialText" parent="@style/Text">
<item name="android:textSize">18sp</item>
<item name="android:textColor">#008</item>
</style>
</resources>
如上所示,你能夠用<item>元素來爲你的風格定義一組格式化的值。在Item當中的名字的屬性能夠是一個
字符串,一個16進制數所表示的顏色或者是其餘資源的引用。
注意在<style>元素中的父類屬性。這個屬性讓你能夠可以定義一個資源,當前風格能夠從這個資源當中繼
承到值。你能夠從任何包含這個風格的資源當中繼承此風格。一般上,你的資源應該一直直接或者間接地
繼承Android的標準風格資源。 這樣的話,你就只須要定義你想改變的值。
在這個例子當中的EditText元素,演示瞭如何引用一個XML佈局文件當中定義的風格:
<EditText id="@+id/text1"
style="@style/SpecialText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello, World!" />
如今這個EditText組件的所表現出來的風格就爲咱們在上邊的XML文件中所定義的那樣。
1.2 主題
就像風格同樣,主題依然在<style>元素裏邊申明,也是以一樣的方式引用。不一樣的是你經過在Android
Manifest中定義的<application>和<activity>元素將主題添加到整個程序或者某個Activity,可是主題是
不能應用在某一個單獨的View裏。
下邊是申明主題的一個例子:
<?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>
注意咱們用了@符號和?符號來應用資源。@符號代表了咱們應用的資源是前邊定義過的(或者在前一個項目
中或者在Android 框架中)。問號?代表了咱們引用的資源的值在當前的主題當中定義過。經過引用在
<item>裏邊定義的名字能夠作到(panelTextColor 用的顏色和panelForegroundColor 中定義的同樣 )。這中
技巧只能用在XML資源當中。
1.2.1 在manifest當中設置主題
爲了在成用當中全部的Activity當中使用主題,你能夠打開AndroidManifest.xml 文件,編
輯<application>標籤,讓其包含android:theme屬性,值是一個主題的名字,以下:
<application android:theme="@style/CustomTheme">
若是你只是想讓你程序當中的某個Activity擁有這個主題,那麼你能夠修改<activity>標籤。
Android中提供了幾種內置的資源,有好幾種主題你能夠切換而不用本身寫。好比你能夠用對話框主題來讓
你的Activity看起來像一個對話框。在manifest中定義以下:
<activity android:theme="@android:style/Theme.Dialog">
若是你喜歡一個主題,可是想作一些輕微的改變,你只須要將這個主題添加爲父主題。好比咱們修改
Theme.Dialog主題。咱們來繼承Theme.Dialog來生成一個新的主題。
<style name="CustomDialogTheme" parent="@android:style/Theme.Dialog">
【eoeAndroid特刊】第二期: 圖像處理篇(1),發佈版本: Ver 1.0.0(build 2009.05.20)
本文檔由eoeAndroid社區組織策劃,整理及發佈,版權全部,轉載請保留!
繼承了Theme.Dialog後,咱們能夠按照咱們的要求來調整主題。咱們能夠修改在Theme.Dialog中定義的每
個item元素的值,而後咱們在Android Manifest 文件中使用CustomDialogTheme 而不是 Theme.Dialog 。
1.2.2 在程序當中設置主題
若是須要的話,你能夠在Activity當中經過使用方法setTheme()來加載一個主題。注意,若是你這麼作的
話,你應該初始化任何View以前設置主題。好比,在調用setContentView(View) 和inflate(int, ViewGroup)
方法前。這保證系統將當前主題應用在全部的UI界面。例子以下:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
setTheme(android.R.style.Theme_Light);
setContentView(R.layout.linear_layout_3);
}
app