回答

3

你有幾個選項。但首先,一些背景:??

在程序兼容性的行動項目使用主題屬性ATTR/actionBarItemBackground(見RES /價值/ styles_base.xml),它被設置爲ATTR/selectableItemBackgroundBorderless(見RES /風格/ themes_base.xml)。此屬性在L和@ drawable/abc_item_background_holo_light之前的版本上設置爲無邊框紋波。

操作欄本身是通過設置?ATTR/actionBarTheme(themes_base.xml)爲主題,在默認情況下設置爲@風格/ ThemeOverlay.AppCompat.ActionBar。在Holo上,此主題覆蓋actionBarItemBackground,因此您需要在此處進行更改。

因此,覆蓋所有操作欄的操作項背景的簡單方法是在actionBarTheme中設置actionBarItemBackground。你可能也想覆蓋selectableItemBackground,因爲CloseMode項目不使用actionBarItemBackground(不知道爲什麼)。

值/ styles.xml:

<style name="MyAppTheme" parent="Theme.AppCompat"> 
    ... 
    <item name="actionBarTheme">@style/MyActionBarTheme</item> 
</style> 

<style name="MyActionBarTheme" parent="ThemeOverlay.AppCompat.ActionBar"> 
    ... 
    <item name="actionBarItemBackground">@drawable/whatever_you_want</item> 
    <item name="selectableItemBackground">@drawable/whatever_you_want</item> 
</style> 

注:這些變化適用於所有API的水平,因此,如果您仍然希望API 21+漣漪,你會希望同時繪製和繪製-V21 @ drawable/whatever_you_want的版本,後者包含漣漪。

+0

感謝@alanv它工作正常。 – 2014-10-31 07:43:48

+0

@alanv如何使用支持工具欄執行此操作?當我擴展Widget.AppCompat.Toolbar時,actionBarItemBackground和selectableItemBackground似乎不工作。 – 2015-01-21 01:30:01

+0

@alanv Neve頭腦;我想出了爲什麼:我正在使用自定義操作項目。 – 2015-01-21 03:03:16

0

對於我這種工作:

<!-- pre 21 --> 
    <item name="actionBarItemBackground">@drawable/selector_ab_tab_indicator</item> 
    <!-- post 21 --> 
    <item name="android:selectableItemBackgroundBorderless">@drawable/selector_ab_tab_indicator</item> 
相關問題