Android開發教學
Android 開發環境配置
Android 架構
Android 應用組件
Android Hello World示例
Android 資源組織和訪問
Android Activity
Android Service
Android廣播接收器
Android內容提供者
Android碎片/片段
Android Intent過濾器
Android UI佈局
Android LinearLayout
Android RelativeLayout
Android TableLayout
Android AbsoluteLayout
Android FrameLayout
Android ListView
Android GridView
Android UI控件
Android TextView
Android EditText
Android AutoCompleteTextView
Android Button
Android ImageButton
Android CheckBox
Android ToggleButton
Android RadioButton
Android RadioGroup
Android事件處理
Android樣式和主題
Android樣式示例
Android主題示例
Android自定義組件
Android拖放
Android通知
Android基於位置服務
Android發送電子郵件
Android發送短信/SMS
Android撥打電話
發佈Android應用
ArrayAdapter
SimpleCursorAdapter
Android ProgressDialog
Android Spinner
使用活動代碼自定義Android組件
使用佈局文件自定義Android組件
Android自定義組件及屬性
Android Alertdialog(警告對話框)
Android Animation(動畫)實例
Android音頻捕獲(錄音)
Android音頻管理器實例
Android AutoCompleteTextView(自動完成)實例
Android最佳實踐
Android Bluetooth(藍牙)實例
Android Camera(攝像頭)
Android Clipboard(複製/剪貼板)
Android自定義字體
Android數據備份
Android Gestures/手勢
Android圖片效果
Android圖片切換
Android內部存儲
Android JetPlayer實例
Android JSON解析器
Android加載Spinner
Android本地化
Android登錄實例
Android MediaPlayer(多媒體播放)

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文件名稱是任意,但它必須使用.xml擴展名。

可以定義每個文件中使用的多種樣式

這裏裏邊的值可以是一個關鍵字串,十六進制的顏色,參考到另一個資源類型,或其他的值取決於樣式屬性。

使用樣式

樣式定義之後,就可以用它在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 name="CustomFontStyle.LargeFont"> <item name="android:textSize">20ps

@style/CustomFontStyle.LargeFont 的XML佈局文件,可以參考這個新的樣式。可以繼續秉承這樣多次,只要願意,週期通過鏈接名稱。例如,可以擴展FontStyle.LargeFont的是紅色的,如下:

<style name="CustomFontStyle.LargeFont.Red"> <item name="android:textColor">#FF0000/>

繼承這種技術通過鏈接在一起的名字僅適用於自己的資源定義的樣式。不能繼承:Android內置樣式的這種方式。要引用一個Android內置風格,如TextAppearance,必須使用父屬性,如下所示:

<style name="CustomFontStyle" parent="@android:style/TextAppearance"> <item name="android:layout_width">fill_parent <item name="android:layout_height">wrap_content <item name="android:capitalize">characters <item name="android:typeface">monospace <item name="android:textSize">12pt <item name="android:textColor">#00FF00/>

Android 主題

希望能夠理解樣式的概念,現在讓我們去了解什麼是主題。主題是什麼,主題只不過是要Android應用到整個活動或應用程序中統一樣式,而不是一個單獨的視圖樣式。

因此,當一個樣式應用爲主題,將適用於每一個活動或應用程序視圖它支持每個樣式屬性。例如,可以應用一個主題Activity 活動的的同一CustomFontStyle風格,然後內部的所有文本,活動都會有綠色環保等寬字體。

要設置應用程序的所有活動的主題,打開AndroidManifest.xml文件,編輯標籤包含了android:theme 屬性的風格名稱。例如:

<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)