Android樣式和主題
如果已經熟悉在網頁設計中的層疊樣式表(CSS),瞭解Android樣式也是非常相似。每個 Android 窗口小部件,可以設置更改應用程序外觀風格相關的屬性。樣式可以指定屬性,如高度,填充,字體顏色,字體大小,背景顏色以及其它。
可以指定這些屬性在佈局文件如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/text_id" android:layout_width="wrap_content" android:layout_height="wrap_content" android:capitalize="characters" android:textColor="#00FF00" android:typeface="monospace" android:text="@string/hello_world" />
不過這樣一來,我們需要定義的樣式屬性,每個屬性分別用於源代碼維護的角度來看這是非常不好的。因此,樣式定義應該放在單獨的文件,如下解釋。
定義樣式
樣式可以定義在一個單獨的XML指定佈局的XML資源文件。此XML文件位於 res/values/ 項目目錄,強制性的樣式文件中
可以定義每個文件中使用的多種樣式
這裏
- 裏邊的值可以是一個關鍵字串,十六進制的顏色,參考到另一個資源類型,或其他的值取決於樣式屬性。
使用樣式
樣式定義之後,就可以用它在XML佈局文件使用樣式屬性,如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/text_id" style="@style/CustomFontStyle" android:text="@string/hello_world" />
要理解這個概念涉及到Android 的樣式,可以檢查 樣式實例。
樣式繼承
Android支持級聯樣式表在網頁設計風格非常類似繼承這種方式。可以使用這個繼承現有的樣式屬性,然後定義想要更改或添加屬性。
其操作簡單,創建一個新的的樣式繼承LargeFont上述CustomFontStyle風格定義,但字體的大小變大,可以編寫這樣的新的樣式:
@style/CustomFontStyle.LargeFont 的XML佈局文件,可以參考這個新的樣式。可以繼續秉承這樣多次,只要願意,週期通過鏈接名稱。例如,可以擴展FontStyle.LargeFont的是紅色的,如下:
繼承這種技術通過鏈接在一起的名字僅適用於自己的資源定義的樣式。不能繼承:Android內置樣式的這種方式。要引用一個Android內置風格,如TextAppearance,必須使用父屬性,如下所示:
Android 主題
希望能夠理解樣式的概念,現在讓我們去了解什麼是主題。主題是什麼,主題只不過是要Android應用到整個活動或應用程序中統一樣式,而不是一個單獨的視圖樣式。
因此,當一個樣式應用爲主題,將適用於每一個活動或應用程序視圖它支持每個樣式屬性。例如,可以應用一個主題Activity 活動的的同一CustomFontStyle風格,然後內部的所有文本,活動都會有綠色環保等寬字體。
要設置應用程序的所有活動的主題,打開AndroidManifest.xml文件,編輯
<application android:theme="@style/CustomFontStyle">
但是,如果想有一個主題,只是在應用程序的一個Activity 活動,然後添加android:theme屬性到
<activity android:theme="@style/CustomFontStyle">
有一些由Android定義的默認主題,可以直接使用或繼承父屬性如下:
要理解這個概念,有關Android的主題,可以查看 主題示例。
默認樣式和主題
Android平臺提供了一個大集合,可以在應用程序中使用的風格和主題。可以在R.style類的參考找到所有可用的樣式。要使用這裏列出的風格,在一個樣式名替換所有下劃線。例如,可以應用Theme_NoTitleBar主題使用如「@android:style/Theme.NoTitleBar」。可以看到下面的源代碼爲Android的風格和主題:
Android Styles (styles.xml)
Android Themes (themes.xml)