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

Android樣式和主題

如果已經(jīng)熟悉在網(wǎng)頁設(shè)計(jì)中的層疊樣式表(CSS),了解Android樣式也是非常相似。每個(gè) Android 窗口小部件,可以設(shè)置更改應(yīng)用程序外觀風(fēng)格相關(guān)的屬性。樣式可以指定屬性,如高度,填充,字體顏色,字體大小,背景顏色以及其它。

可以指定這些屬性在布局文件如下:

<?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"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:capitalize="characters"
   android:textColor="#00FF00"
   android:typeface="monospace"
   android:text="@string/hello_world" />

</LinearLayout>

不過這樣一來,我們需要定義的樣式屬性,每個(gè)屬性分別用于源代碼維護(hù)的角度來看這是非常不好的。因此,樣式定義應(yīng)該放在單獨(dú)的文件,如下解釋。

定義樣式

樣式可以定義在一個(gè)單獨(dú)的XML指定布局的XML資源文件。此XML文件位于 res/values/ 項(xiàng)目目錄,強(qiáng)制性的樣式文件中<resources>作為根節(jié)點(diǎn),XML文件名稱是任意,但它必須使用.xml擴(kuò)展名。

可以定義每個(gè)文件中使用的多種樣式<style>標(biāo)簽,但要使用唯一的名稱來標(biāo)識(shí)此樣式。 Android 樣式屬性設(shè)置使用的<item>標(biāo)簽,如下圖所示:

<?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>里邊的值可以是一個(gè)關(guān)鍵字串,十六進(jìn)制的顏色,參考到另一個(gè)資源類型,或其他的值取決于樣式屬性。

使用樣式

樣式定義之后,就可以用它在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>

要理解這個(gè)概念涉及到Android 的樣式,可以檢查 樣式實(shí)例。

樣式繼承

Android支持級(jí)聯(lián)樣式表在網(wǎng)頁設(shè)計(jì)風(fēng)格非常類似繼承這種方式。可以使用這個(gè)繼承現(xiàn)有的樣式屬性,然后定義想要更改或添加屬性。

其操作簡單,創(chuàng)建一個(gè)新的的樣式繼承LargeFont上述CustomFontStyle風(fēng)格定義,但字體的大小變大,可以編寫這樣的新的樣式:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <style name="CustomFontStyle.LargeFont">
      <item name="android:textSize">20ps</item>
   </style>
</resources>

@style/CustomFontStyle.LargeFont 的XML布局文件,可以參考這個(gè)新的樣式。可以繼續(xù)秉承這樣多次,只要愿意,周期通過鏈接名稱。例如,可以擴(kuò)展FontStyle.LargeFont的是紅色的,如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <style name="CustomFontStyle.LargeFont.Red">
      <item name="android:textColor">#FF0000</item>/> 
   </style>
</resources>

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

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <style name="CustomFontStyle" parent="@android:style/TextAppearance">
      <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>

Android 主題

希望能夠理解樣式的概念,現(xiàn)在讓我們?nèi)チ私馐裁词侵黝}。主題是什么,主題只不過是要Android應(yīng)用到整個(gè)活動(dòng)或應(yīng)用程序中統(tǒng)一樣式,而不是一個(gè)單獨(dú)的視圖樣式。

因此,當(dāng)一個(gè)樣式應(yīng)用為主題,將適用于每一個(gè)活動(dòng)或應(yīng)用程序視圖它支持每個(gè)樣式屬性。例如,可以應(yīng)用一個(gè)主題Activity 活動(dòng)的的同一CustomFontStyle風(fēng)格,然后內(nèi)部的所有文本,活動(dòng)都會(huì)有綠色環(huán)保等寬字體。

要設(shè)置應(yīng)用程序的所有活動(dòng)的主題,打開AndroidManifest.xml文件,編輯<application>標(biāo)簽包含了android:theme 屬性的風(fēng)格名稱。例如:

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

但是,如果想有一個(gè)主題,只是在應(yīng)用程序的一個(gè)Activity 活動(dòng),然后添加android:theme屬性到<activity>標(biāo)簽。例如: 

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

有一些由Android定義的默認(rèn)主題,可以直接使用或繼承父屬性如下:

<style