- Android 基礎
- Android - 首頁
- Android - 概述
- Android - 環境設定
- Android - 架構
- Android - 應用程式元件
- Android - Hello World 示例
- Android - 資源
- Android - 活動(Activity)
- Android - 服務(Service)
- Android - 廣播接收器(Broadcast Receiver)
- Android - 內容提供器(Content Provider)
- Android - 碎片(Fragment)
- Android - 意圖/過濾器(Intents/Filters)
- Android - 使用者介面
- Android - UI 佈局
- Android - UI 控制元件
- Android - 事件處理
- Android - 樣式和主題
- Android - 自定義元件
- Android 高階概念
- Android - 拖放
- Android - 通知
- 基於位置的服務
- Android - 傳送電子郵件
- Android - 傳送簡訊
- Android - 電話呼叫
- 釋出 Android 應用程式
- Android 有用示例
- Android - 警報對話方塊
- Android - 動畫
- Android - 音訊捕獲
- Android - 音訊管理器
- Android - 自動完成
- Android - 最佳實踐
- Android - 藍牙
- Android - 相機
- Android - 剪貼簿
- Android - 自定義字型
- Android - 資料備份
- Android - 開發者工具
- Android - 模擬器
- Android - Facebook 整合
- Android - 手勢
- Android - Google 地圖
- Android - 影像效果
- Android - ImageSwitcher
- Android - 內部儲存
- Android - JetPlayer
- Android - JSON 解析器
- Android - Linkedin 整合
- Android - 載入微調器
- Android - 本地化
- Android - 登入螢幕
- Android - MediaPlayer
- Android - 多點觸控
- Android - 導航
- Android - 網路連線
- Android - NFC 指南
- Android - PHP/MySQL
- Android - 進度圓圈
- Android - 進度條
- Android - 推送通知
- Android - RenderScript
- Android - RSS 閱讀器
- Android - 螢幕錄製
- Android - SDK 管理器
- Android - 感測器
- Android - 會話管理
- Android - 共享首選項
- Android - SIP 協議
- Android - 拼寫檢查器
- Android - SQLite 資料庫
- Android - 支援庫
- Android - 測試
- Android - 文字轉語音
- Android - TextureView
- Android - Twitter 整合
- Android - UI 設計
- Android - UI 模式
- Android - UI 測試
- Android - WebView 佈局
- Android - Wi-Fi
- Android - 小部件
- Android - XML 解析器
- Android 有用資源
- Android - 問答
- Android - 有用資源
- Android - 討論
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" />
您的新主題將應用於您的活動,並且文字現在為亮紅色。
將顏色應用於主題屬性
然後,您的顏色資源可以應用於某些主題屬性,例如視窗背景和主要文字顏色,方法是在自定義主題中新增<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>
使用自定義九宮格與按鈕
九宮格可繪製物件是一種特殊的影像,可以在保持其視覺完整性的同時按寬度和高度縮放。九宮格是指定 Android 按鈕外觀的最常用方法,儘管可以使用任何可繪製型別。
九宮格按鈕示例
建立九宮格按鈕的步驟
- 將此點陣圖儲存為 /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>
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 主題相關的概念,您可以檢視主題演示示例。
設定顏色調色盤
佈局設計可以基於這些顏色實現,例如以下設計是基於主題顏色(藍色)設計的
以上佈局是基於 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 樣式和主題的原始碼:
