2013-10-22 149 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