2013-10-22 52 views
7

我的應用程序的主題看起來像顯示在下面的截圖:如何更改上下文操作欄的溢出圖標而不更改其標準操作欄?

action bar with white overflow icon

爲主題是基於Theme.Holo.Light包含暗操作欄的文本和溢流圖標,我用下面的樣式調整的菜單圖標:

<style name="ActionBar.Light" parent="android:style/Widget.Holo.ActionBar"> 
    <item name="android:background">@color/highlight</item> 
    <item name="android:titleTextStyle">@style/TextAppearance.ActionBar.Title.Light</item> 
    <item name="android:subtitleTextStyle">@style/TextAppearance.ActionBar.Subtitle.Light</item> 
</style> 
... 
<style name="Theme.Light" parent="@android:style/Theme.Holo.Light"> 
    ... 
    <item name="android:actionBarStyle">@style/ActionBar.Light</item> 
    <item name="android:actionOverflowButtonStyle">@android:style/Widget.Holo.ActionButton.Overflow</item> 
    ... 
</style> 

當一個或多個表項檢查我要顯示一個白色的背景行動起來吧,但不幸的是白色的溢出圖標是不可見的白色背景:

contextual action bar with white overflow icon on white background

任何想法如何更改上下文欄的溢出圖標 - 無論是通過樣式或編程?

最後的解決方法(2014年2月27)

它似乎沒有改變上下文操作欄獨立於標準操作欄的一個溢出圖標的選項。所以,我沒有別的選擇,只能改變上下文欄的背景顏色爲深灰色,從而使白色溢出按鈕可見:

gray contextual action bar

右邊的圖標是我的控制之下,所以它是容易改變它們。使用主題屬性可以輕鬆更改左側的「完成」圖標和文本(檢查計數器)。只有「完成」圖標和檢查計數器之間的精簡分隔符不能使用屬性進行更改。他們需要一個自定義佈局 - 這就是爲什麼我現在離開它的原因。

這裏是我的上下文欄樣式及相關部件從主題:

<style name="TextAppearance.ActionBar.Title" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title"> 
    <item name="android:fontFamily">sans-serif-light</item> 
</style> 
<style name="TextAppearance.ActionBar.Title.Light"> 
    <item name="android:textColor">#ffffff</item> 
</style> 

<style name="ContextualBar.Light" parent="android:style/Widget.Holo.ActionMode"> 
    <item name="android:background">#666666</item> 
    <item name="android:titleTextStyle">@style/TextAppearance.ActionBar.Title.Light</item> 
    <item name="android:actionMenuTextColor">#ffffff</item> 
</style> 

<style name="Theme.Light" parent="@android:style/Theme.Holo.Light"> 
    ... 
    <item name="android:actionBarStyle">@style/ActionBar.Light</item> 
    <item name="android:actionModeStyle">@style/ContextualBar.Light</item> 
    <item name="android:actionModeCloseDrawable">@drawable/ic_action_done</item> 
    <item name="android:actionOverflowButtonStyle">@android:style/Widget.Holo.ActionButton.Overflow</item> 
    <item name="android:actionMenuTextColor">#ffffff</item> 
    ... 
</style> 

廣告:你可以看到完整的結果the final app "uPod"它可在谷歌玩!

+0

可能會更容易只是改變上下文操作欄背景色爲一些淡藍色假設你的。 –

+0

嘿,你知道了嗎?我遇到了同樣的問題 – Zen

+0

@alexsummers似乎沒有必要爲標準和上下文操作欄設置不同的溢出圖標。我已將背景欄的背景更改爲深灰色,以便白色圖標變得可見。 – sven

回答

2

您的主題和使用程序兼容性

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar"> 
    <item name="android:actionOverflowButtonStyle">@style/OverFlowStyle</item> 
</style> 
<style name="OverFlowStyle" parent="Widget.AppCompat.ActionButton.Overflow"> 
    <item name="android:src">@drawable/your_selector_drawable_here</item> 
</style> 
+0

我正在使用本機操作欄。就我所見,你的風格會改變圖標:普通模式和上下文模式。我想爲普通和上下文模式設置不同的圖標。 – sven