2012-07-09 62 views
4

我一直在嘗試創建自己的動作項目,但它對我來說不可能。造型動作項目背景ActionBarSherlock

我正在嘗試做的是創建一個自定義操作項目佈局(例如顏色背景),像「拇指」操作欄。我只想爲我的一項活動更改行動項目。

enter image description here

我一直在玩安卓圖標和android:actionLayout屬性操作菜單項..但我什麼也沒得到。

其實,我見過的StackOverflow另一個線程,但它並沒有幫助我...

Building ActionMode with custom layout in ActionBarSherlock

styling ActionbarSherlock: textColor of the action-items

任何想法?提前致謝!

+0

你可以自定義操作欄,如圖所示嗎? – 2013-09-18 12:16:34

+0

這是一箇舊項目,我終於無法嘗試。如果你可以試試它會很好!我認爲下面的答案是正確的,但我還沒有測試過:) 對不起,祝你好運! – cesards 2013-09-18 12:53:57

+0

該答案將改變所有行動項目的背景。我通過使用actionLayout獲取菜單項。 – 2013-09-19 04:26:25

回答

12

要覆蓋ActionBarSherlock主題,你應該這樣進行:

開放values/abs__themes.xmlActionBarSherlock庫項目。你看,例如:

<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.LightTheme.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,它生成的款式適合你。

+0

感謝您的回答。幫助過我。 – Siddhesh 2013-01-25 09:00:52

+0

+1 @ Michel-F。 Portzert是否有可能在行動項目周圍設置邊界?如果是,該怎麼辦?你已經顯示的步驟相同? – Roylee 2013-04-19 05:23:25

+0

我沒有太多時間進行搜索,因此我建議在「drawable /」文件夾中創建一個特殊的背景xml文件。或者含有屬性如果只需要一個彩色背景,或任一個如果需要的邊界上的背景圖像的頂部, 例如:<位圖機器人:SRC =「@繪製/ ic_launcher」 /> <行程機器人:寬度= 「2DP」 機器人:顏色= 「#FF0000」/> <固體機器人:顏色= 「#00000000」/> 2013-04-19 09:36:29