標籤:des android style blog http color io os ar
本文翻譯自:https://developer.android.com/guide/topics/ui/themes.html
Style和theme詞彙是專用術語,下文直接使用而不翻譯。
樣式和主題(Styles and Themes)
一個樣式(Style)是一個包含了指定樣子和格式的作用於視圖控制項(View)或者表單(Window)屬性集合。一個style可以指定很多屬性,比如 高度,填充,字型顏色,字型尺寸,背景色等。一個Style在xml資源檔中定義,並且和在xml中指定的布局區分開來。
在Android裡的樣式和Web設計中的CSS共用一個相似的原理,它們允許你分離設計(Design)和內容(Content).
舉個例子,通過使用一個style,你可以讓你的布局xml像下面這樣:
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="#00FF00" android:typeface="monospace" android:text="@string/hello" />
並且,可以變成下面這樣:
<TextView style="@style/CodeFont" android:text="@string/hello" />
所有關聯到style的屬性已經在布局xml中被刪除了,並且放在一個叫做“CodeFont”style中定義了。它通過一個style屬性被應用上。在下面的章節,你將會看到如何定義style。
一個主題(Theme)也是一個style,它被應用在所有的Activity或者application上,而不是個別的視圖控制項(View)(像上面的樣本一樣)。當一個style被當做一個theme來應用,每一個activity或者application中的視圖控制項將應用每一個它支援的樣式屬性。比如,你可以在activity上使用相同的CodeFont樣式作為一個theme,這時Activity裡的所有內部字型將會變成CodeFont樣式的字型樣式變成綠色的等寬字型。
定義一個樣式Style
為了建立一些樣式,你可以儲存在你的工程下的 res/Values/ 檔案夾下的一個XML檔案中。XML檔案的名字是隨意的,但是必須副檔名是 .xml 並且存放在 res/Values/ 檔案夾下。
XML檔案的根節點必須是<resources>
為你建立的每個樣式,添加一個<style>元素,並且需要一個name 屬性,它標識唯一性而且是必需的屬性。再為你的樣式屬性都添加進去,通過添加<item>元素來做,使用一個在樣式屬性裡聲明的name屬性和一個value屬性,這兩個都是必需的。<item>的value屬性可以是一個關鍵字字串,一個16進位的顏色描述,一個其他資源類型的引用,或者在其他樣式屬性中依賴的value。下面是一個簡單的樣本樣式檔案內容:
<?xml version="1.0" encoding="utf-8"?><resources> <style name="CodeFont" parent="@android:style/TextAppearance.Medium"> <item name="android:layout_width">fill_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:textColor">#00FF00</item> <item name="android:typeface">monospace</item> </style></resources>
每一個<resources>元素的子節點在編譯時間都被轉換成一個程式資來源物件。它可以通過<style>元素的name屬性的值(value)來被引用引用。這個樣本樣式可以在XML布局中被引用,比如“@style/CodeFont”(像上面介紹的樣本一樣)。
在<style>元素中的parent屬性是可選的並且指向一個其他樣式中的資源ID,它可以從這個樣式中繼承一些屬性。合適的話,你可以重寫(override)繼承到的屬性。
記住,一個你想在activity或者application中使用的樣式都被在XML檔案中定義,並且所有的視圖控制項具有相同的樣式。一個樣式,比如上面定義的那個,可以被作為一style應用的單一的視圖控制項上或者被作為一個theme應用在全部的activity或者application上。如何應用的單一的視圖或者作為應用的主題,我們稍後討論。
Android中文翻譯 - Styles and themes (樣式和主題)