Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android官方文檔之User Interface(Styles and Themes)

Android官方文檔之User Interface(Styles and Themes)

編輯:關於Android編程

User Interface(以下簡稱UI)是任何可以向用戶展示、與用戶交互的圖形界面。Android提供了大量預定義的UI組件( a variety of pre-built UI components),比如Layout資源,除此之外,Android還提供了特殊的UI模型,如dialogs、notifications、menus 等。


樣式和主題(Styles and Themes)


一個Style資源是一組屬性的集合,用於指定一個View或一個Window的樣子和格式(A style is a collection of properties that specify the look and format for a View or window. A style can specify properties ),比如高度、內邊距、字體顏色、字體大小、背景顏色 等( such as height, padding, font color, font size, background color, and much more)。Style資源在XML資源中定義,以區分layout資源。


具有相同或相似外觀的UI控件可以共享同一個Style資源,如下所示:

將上述TextView中某些屬性抽取出來,定義在style資源中,並給該資源起名為CodeFont,這樣其他TextView也可以應用該資源,這些TextView的風格將保持一致。


theme 資源是一種特殊的style資源,只不過theme資源作用於整個Activity或Application上,而不是View或Window上(A theme is a style applied to an entire Activity or application, rather than an individual View)。將一個style作為theme資源作用在Activity或Application上,實際上是作用在了activity或application中的所有控件上。比如說,若將style資源CodeFont作為theme資源作用在了 Activity上,那麼這個activity中的所有控件都將具有綠色(#00FF00)以及等寬字體(monospace font)。


定義樣式(Defining Styles)


style應定義在res/values/目錄下的XML文件中,文件名任意(The name of the XML file is arbitrary)。在文件中必須作為style資源的根標簽。根標簽內部包含您需要自定義的style資源,以


您可以在其他位置以@style/CodeFont的形式引用該style資源。


如果您需要繼承自定義的style資源,那麼無需使用屬性。只需要在新定義的style資源的name屬性中將被繼承的style資源名作為前綴,並以” . “分隔即可:

例如,現在要繼承自定義的CodeFont style,新的自定義style名字為Red,那麼只需命名為:CodeFont.Red即可。並在其他位置以@style/CodeFont.Red的方式引用。


如果需要繼續繼承上述style,那麼name也只需以鏈式的方式書寫即可:


!請注意:這種鏈式地style繼承方式只適用於繼承您自定義的style資源,如需繼承Android自帶的style資源,仍需使用屬性。


樣式屬性(Style Properties)


標簽用於指定自定義的屬性。您可以指定類似於layout_widthtextColor這樣的屬性。可以通過具體的View所具有的屬性來定義。在代碼中可以通過 R.attr來獲取這些屬性值。如果您引用的style中包含了不支持該控件的屬性,那麼這些屬性將被忽略。


某些特殊的屬性不被任何View支持,只能應用在theme中。也就是說,這些屬性只被Activity或Application支持。比如有的屬性用於確定是否隱藏應用的標題、是否隱藏狀態欄或者修改window的背景色 等。這些屬性並不屬於任何View,它們有一個共同的特點,就是名字以window開頭。比如:windowNoTitle 和 windowBackground 屬性。


在UI中應用樣式和主題(Applying Styles and Themes to the UI)


應用style的方式有兩種:

對於View來說,只需使用


!請注意:由於android:windowBackground屬性的值只支持引用類型,並不接受字面值,所以寫法如上所示。


下面只需將該定制的主題應用到activity上即可:


為整個應用選擇一個基礎主題(Select a theme based on platform version)


新的Android版本增加了一些系統主題,為了讓這些主題也能應用在舊的Android版本中,應當在目錄中使用不同後綴的文件夾做以區分,比如:android:Theme.Holo.Light是在Android 3.0之後新增的主題,那麼您需要定制一個繼承了該主題的theme,並把該主題放在res/values-v11/styles.xml中:


再在默認的目錄中( res/values/styles.xml)定義如下主題:

<style name="LightThemeSelector" parent="android:Theme.Light">
    ...</style>

因為android:Theme.Light主題在Android 3.0之前也支持,所以當設備版本小於3.0時,將加載該主題。


通過R.styleable.Theme可獲取該主題的所有屬性集合。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved