如果想將 action bar 的風(fēng)格設(shè)計(jì)的合乎我們產(chǎn)品的定位脑题,只需簡(jiǎn)單地使用 Android 的樣式和主題資源。
注意:如果我們?yōu)?action bar 使用了 Support 庫(kù)的 API拄养,那我們必須使用(或重寫)Theme.AppCompat家族樣式(甚至Theme.Holo家族钞瀑,在 API level 11 或更高版本中可用)卓舵。如此一來(lái)弊仪,聲明的每一個(gè)樣式屬性都必須被聲明兩次:一次使用系統(tǒng)平臺(tái)的樣式屬性(android:屬性),另一次使用 Support 庫(kù)中的樣式屬性(appcompat.R.attr屬性 - 這些屬性的上下文其實(shí)就是我們的 app)洲脂。
使用一個(gè) Android 主題
Android 包含兩個(gè)基本的 activity 主題斤儿,這兩個(gè)主題決定了 action bar 的顏色:
Theme.Holo,一個(gè) “dark” 的主題
Theme.Holo.Light恐锦,一個(gè) “l(fā)ight” 的主題
這些主題即可以被應(yīng)用到 app 全局往果,也可以通過(guò)在 manifest 文件中設(shè)置元素 或元素的android:theme屬性,對(duì)單一的 activity 進(jìn)行設(shè)置一铅。
自定義背景
重寫actionBarStyle屬性來(lái)實(shí)現(xiàn)陕贮。actionBarStyle屬性指向另一個(gè)樣式;在該樣式里馅闽,通過(guò)指定一個(gè) drawable 資源來(lái)重寫background屬性飘蚯。
如果我們的 app 使用了navigation tabs或split action bar,也可以通過(guò)分別設(shè)置backgroundStacked和backgroundSplit屬性來(lái)為這些條指定背景福也。(Note:為自定義主題和樣式聲明一個(gè)合適的父主題局骤,這點(diǎn)很重要。如果沒(méi)有父樣式暴凑,action bar將會(huì)失去很多默認(rèn)的樣式屬性峦甩,除非我們自己顯式的對(duì)他們進(jìn)行聲明。)
僅支持 Android 3.0 和更高
當(dāng)僅支持 Android 3.0 和更高版本時(shí),可以通過(guò)如下方式定義 action bar 的背景:res/values/themes.xml
支持 Android 2.1 和更高
當(dāng)使用 Support 庫(kù)時(shí)凯傲,上面同樣的主題必須被替代成如下:res/values/themes.xml
自定義文本顏色
修改 action bar 中的文本顏色犬辰,需要分別設(shè)置每個(gè)元素的屬性:
Action bar 的標(biāo)題:創(chuàng)建一種自定義樣式,并指定textColor屬性冰单;同時(shí)幌缝,在自定義的actionBarStyle中為titleTextStyle屬性指定為剛才的自定義樣式。(注意:被應(yīng)用到titleTextStyle的自定義樣式應(yīng)該使用TextAppearance.Holo.Widget.ActionBar.Title作為父樣式诫欠。)
僅支持 Android 3.0 和更高
當(dāng)僅支持 Android 3.0 和更高時(shí)涵卵,樣式 XML 文件應(yīng)該是這樣的:
res/values/themes.xml
自定義 Tab Indicator
為 activity 創(chuàng)建一個(gè)自定義主題,通過(guò)重寫actionBarTabStyle屬性來(lái)改變navigation tabs使用的指示器荒叼。actionBarTabStyle屬性指向另一個(gè)樣式資源轿偎;在該樣式資源里,通過(guò)指定一個(gè)state-list drawable 來(lái)重寫background屬性被廓。
注意:一個(gè)state-list drawable 是重要的坏晦,它可以通過(guò)不同的背景來(lái)指出當(dāng)前選擇的 tab 與其他 tab 的區(qū)別。更多關(guān)于如何創(chuàng)建一個(gè) drawable 資源來(lái)處理多個(gè)按鈕狀態(tài)嫁乘,請(qǐng)閱讀State List文檔昆婿。
例如,這是一個(gè)狀態(tài)列表 drawable亦渗,為一個(gè) action bar tab 的多種不同狀態(tài)分別指定背景圖片:
res/drawable/actionbar_tab_indicator.xml
僅支持 Android 3.0 和更高
當(dāng)僅支持 Android 3.0 和更高時(shí)挖诸,樣式 XML 文件應(yīng)該是這樣的:
res/values/themes.xml
源地址:http://wiki.jikexueyuan.com/project/android-training-geek/styling.html