如何在不更改标准操作栏的情况下更改上下文操作栏的溢出图标?

时间:2013-10-22 15:25:03

标签: android android-actionbar contextual-action-bar

我的应用主题如下图所示:

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>

广告:您可以在Google Play上找到the final app "uPod"中的完整结果!

1 个答案:

答案 0 :(得分:2)

关于你的主题并假设你使用Appcompat

<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>