• Android Video Tutorials

Android - 樣式和主題



一個樣式資源定義了 UI 的格式和外觀。樣式可以應用於單個 View(來自佈局檔案)或整個 Activity 或應用程式(來自清單檔案)。

定義樣式

樣式在與指定佈局的 XML 分開的 XML 資源中定義。此 XML 檔案位於專案的res/values/目錄下,並將具有<resources>作為根節點,這對於樣式檔案是必需的。XML 檔案的名稱是任意的,但必須使用 .xml 副檔名。

您可以使用<style>標籤為每個檔案定義多個樣式,但每個樣式都將具有唯一標識該樣式的名稱。Android 樣式屬性使用<item>標籤設定,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <style name="CustomFontStyle">
      <item name="android:layout_width">fill_parent</item>
      <item name="android:layout_height">wrap_content</item>
      <item name="android:capitalize">characters</item>
      <item name="android:typeface">monospace</item>
      <item name="android:textSize">12pt</item>
      <item name="android:textColor">#00FF00</item>/> 
   </style>
</resources>
<item>的值可以是關鍵字字串、十六進位制顏色、對其他資源型別的引用或其他值,具體取決於樣式屬性。

使用樣式

定義樣式後,您可以使用style屬性在 XML 佈局檔案中使用它,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<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" />

</LinearLayout>

要了解與 Android 樣式相關的概念,您可以檢視樣式演示示例

樣式繼承

Android 以與網頁設計中的級聯樣式表非常相似的方式支援樣式繼承。您可以使用它來繼承現有樣式的屬性,然後僅定義要更改或新增的屬性。

要實現自定義主題,請建立或編輯 MyAndroidApp/res/values/themes.xml 並新增以下內容:

<resources>
   ...
   <style name="MyCustomTheme" parent="android:style/Theme">
   <item name="android:textColorPrimary">#ffff0000</item>
   </style>
   ...
</resources>

在您的 AndroidManifest.xml 中,將主題應用於您想要設定樣式的活動:

<activity
   android:name="com.myapp.MyActivity"
   ...
   android:theme="@style/MyCustomTheme"
   />

您的新主題將應用於您的活動,並且文字現在為亮紅色。

Theme

將顏色應用於主題屬性

然後,您的顏色資源可以應用於某些主題屬性,例如視窗背景和主要文字顏色,方法是在自定義主題中新增<item>元素。這些屬性在您的 styles.xml 檔案中定義。例如,要將自定義顏色應用於視窗背景,請將以下兩個<item>元素新增到您的自定義主題中,該主題在 MyAndroidApp/res/values/styles.xml 檔案中定義:

<resources>
   ...
   <style name="MyCustomTheme" ...>
      <item name="android:windowBackground">@color/my_custom_color</item>
      <item name="android:colorBackgroundCacheHint">@color/my_custom_color</item>
   </style>
   ...
</resources>
Theme

使用自定義九宮格與按鈕

九宮格可繪製物件是一種特殊的影像,可以在保持其視覺完整性的同時按寬度和高度縮放。九宮格是指定 Android 按鈕外觀的最常用方法,儘管可以使用任何可繪製型別。

Nine Patch Button

九宮格按鈕示例

建立九宮格按鈕的步驟

  • 將此點陣圖儲存為 /res/drawable/my_nine_patch.9.png
  • 定義一個新的樣式
  • 將新的按鈕樣式應用於自定義主題的 buttonStyle 屬性

定義一個新的樣式

<resources>
   ...
      <style name="MyCustomButton" parent="android:Widget.Button">
      <item name="android:background">@drawable/my_nine_patch</item>
      </style>
   ...
</resources>

應用主題

<resources>
   ...
      <style name="MyCustomTheme" parent=...>
         ...
         <item name="android:buttonStyle">@style/MyCustomButton</item>
      </style>
   ...
</resources>
Theme

Android 主題

希望您理解了樣式的概念,那麼現在讓我們嘗試瞭解什麼是主題。主題不過是在整個 Activity 或應用程式(而不是單個 View)上應用的 Android 樣式。

因此,當樣式作為主題應用時,Activity 或應用程式中的每個View都將應用其支援的每個樣式屬性。例如,您可以將相同的CustomFontStyle樣式作為 Activity 的主題應用,然後該Activity內的所有文字都將具有綠色等寬字型。

要為應用程式的所有活動設定主題,請開啟AndroidManifest.xml檔案並編輯<application>標籤以包含android:theme屬性以及樣式名稱。例如:

<application android:theme="@style/CustomFontStyle">

但是,如果您希望將主題應用於應用程式中的一個 Activity,則只需將 android:theme 屬性新增到<activity>標籤中。例如:

<activity android:theme="@style/CustomFontStyle">

Android 定義了許多預設主題,您可以直接使用它們或使用parent屬性繼承它們,如下所示:

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

要了解與 Android 主題相關的概念,您可以檢視主題演示示例

設定顏色調色盤

佈局設計可以基於這些顏色實現,例如以下設計是基於主題顏色(藍色)設計的

Theme

以上佈局是基於 style.xml 檔案設計的,該檔案位於res/values/

<resource>
   <style name="AppTheme" parent="android:Theme.Material">	
      <item name ="android:color/primary">@color/primary</item>
      <item name ="android:color/primaryDark">@color/primary_dark</item>
      <item name ="android:colorAccent/primary">@color/accent</item>
   </style>
<resource>	

預設樣式和主題

Android 平臺提供大量可用於應用程式的樣式和主題。您可以在R.style類中找到所有可用樣式的參考。要使用此處列出的樣式,請將樣式名稱中的所有下劃線替換為句點。例如,您可以使用“@android:style/Theme.NoTitleBar”應用 Theme_NoTitleBar 主題。您可以檢視以下 Android 樣式和主題的原始碼:

廣告

© . All rights reserved.