要覆蓋ActionBarSherlock
主題,你應該這樣進行:
開放values/abs__themes.xml
從ActionBarSherlock
庫項目。你看,例如:
<style name="Theme.Sherlock" parent="Sherlock.__Theme">
<!-- Action bar styles (from Theme.Holo) -->
<item name="actionDropDownStyle">@style/Widget.Sherlock.Spinner.DropDown.ActionBar</item>
<item name="actionButtonStyle">@style/Widget.Sherlock.ActionButton</item>
<item name="actionOverflowButtonStyle">@style/Widget.Sherlock.ActionButton.Overflow</item>
<item name="actionModeBackground">@drawable/abs__cab_background_top_holo_dark</item>
<item name="actionModeSplitBackground">@drawable/abs__cab_background_bottom_holo_dark</item>
<item name="actionModeCloseDrawable">@drawable/abs__ic_cab_done_holo_dark</item>
<item name="actionBarTabStyle">@style/Widget.Sherlock.ActionBar.TabView</item>
...
// Here is what you wanted
<item name="actionBarItemBackground">@drawable/abs__item_background_holo_dark</item>
...
當你找到你想要自定義的項目(actionBarItemBackground
你的情況),您可以創建你的項目中自己themes.xml
,並添加它:
<style name="Custom.Theme.Sherlock" parent="@style/Theme.Sherlock">
<item name="actionBarItemBackground">@drawable/my__item_background_holo_dark</item>
</style>
這會覆蓋默認的Theme.Sherlock
,設置自定義actionBarItemBackground
。
現在,您應該使用setTheme(R.style.Custom_Theme_Sherlock)
而不是在您的活動中使用Theme.Sherlock
。您可能還需要重寫其他兩個主題(Theme.Sherlock.Light
和Theme.Sherlock.Light.DarkActionBar
)
一個提示,這裏是默認操作項目背景使用ActionBarSherlock
(在holo_light),它採用9補丁PNG可繪製可繪製選擇:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. -->
<item android:state_focused="true" android:state_enabled="false" android:state_pressed="true" android:drawable="@drawable/abs__list_selector_disabled_holo_light" />
<item android:state_focused="true" android:state_enabled="false" android:drawable="@drawable/abs__list_selector_disabled_holo_light" />
<item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/abs__list_selector_background_transition_holo_light" />
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/abs__list_selector_background_transition_holo_light" />
<item android:state_focused="true" android:drawable="@drawable/abs__list_focused_holo" />
<item android:drawable="@android:color/transparent" />
對於其他基本的定製,你可以用這個tool,它生成的款式適合你。
你可以自定義操作欄,如圖所示嗎? – 2013-09-18 12:16:34
這是一箇舊項目,我終於無法嘗試。如果你可以試試它會很好!我認爲下面的答案是正確的,但我還沒有測試過:) 對不起,祝你好運! – cesards 2013-09-18 12:53:57
該答案將改變所有行動項目的背景。我通過使用actionLayout獲取菜單項。 – 2013-09-19 04:26:25