天天看點

Android官方開發文檔Training系列課程中文版:添加ActionBar之自定義ActionBar樣式

Android已經包含了一少部分的内置Activity主題,這些主題包含了”dark”或者”light”的ActionBar風格。你也可以通過繼承這些主題來進一步的自定義自己ActionBar。

Android内置了兩種最基本的Activity主題,它們差別在于ActionBar的顔色:

Theme.Holo 是”dark”主題。

Theme.Holo.Light 是”light”主題。

你可以将這些主題應用到整個APP中或者是單個Activity中,通過在清單檔案的< application>元素或是< activity>元素内部使用android:theme屬性來指定:

你也可以通過使用Theme.Holo.Light.DarkActionBar主題來達到ActionBar是”dark”樣式而Activity的其餘部分則是”light”樣式的效果。

如果是使用了支援庫的話,必須使用Theme.AppCompat下的主題:

Theme.AppCompat 對應的是”dark”主題.

Theme.AppCompat.Light 對應的是”light”主題.

Theme.AppCompat.Light.DarkActionBar 對應的是帶着黑色ActionBar的亮色主題.

為了改變ActionBar的背景色,需要建立一個自定義的主題,然後重寫actionBarStyle屬性。這個屬性指向了其它的背景樣式,您可以在其它背景樣式中重寫background屬性來給ActionBar指定一個圖像資源。

如果APP使用了navigation tabs或者 split action bar,你也可以分别通過backgroundStacked和backgroundSplit屬性指定他們的背景色。

注意: 選擇适合的父類主題對于自定義主題來說很重要,當繼承主題之後,所有的樣式都會被繼承下來。如果沒有父類主題,除非很明确的聲明了每一項樣式,否則ActionBar會丢失很多樣式屬性。

當僅僅支援了Android 3.0及更高的版本,你可以像這樣定義ActionBar的背景:

然後應用這個主題到整個APP中或者是單個Activity中:

當使用了支援庫,它的修改方式和上面很相似:

為了改變ActionBar上的字型顔色,你需要單獨重寫text元素的每一個屬性:

ActionBar标題:建立自定義的樣式,然後指定textColor的值,然後将這個樣式應用到你自己定義的主題actionBarStyle中的titleTextStyle屬性裡。

注意:如果要使用應用到titleTextStyle中的自定義樣式,那麼應該使這個樣式繼承TextAppearance.Holo.Widget.ActionBar.Title。

ActionBar的标簽:重寫主題中的actionBarTabTextStyle。

ActionBar中的按鈕:重寫主題中的actionMenuTextColor。

當僅僅支援了Android 3.0及更高的版本,你的XML風格檔案應該使這樣的:

當使用了支援庫,你的XML風格檔案應該使這樣的:

如果要改變導航标簽navigation tabs的訓示器的話,建立一個activity主題,然後重寫actionBarTabStyle屬性。這個屬性會指向其它樣式資源。這個樣式資源需要重寫background屬性,然後并設定它的值為一個狀态清單圖像資源。

舉個例子,以下是一個狀态清單圖像資源檔案的内容。這裡聲明了用作于ActionBar标簽的若幹個狀态,每個狀态都指定了一張背景圖:

更多資源

繼續閱讀