更改 actionBar 下拉背景颜色

Posted

技术标签:

【中文标题】更改 actionBar 下拉背景颜色【英文标题】:Changing actionBar dropdown background color 【发布时间】:2013-03-03 20:23:55 【问题描述】:

如何更改显示“添加联系人”和“关于”的背景颜色。现在它有点灰,但我希望它是白色的!这是一个带有下拉菜单的 actionBar,而不是一个微调器。而且我没有使用那个 actionbarsherlock 的东西。

【问题讨论】:

您的应用程序使用哪个主题? 【参考方案1】:

例如,在您现有的父 Style 定义中,只需添加 android:popupMenuStyle 属性,如下所示:

<style name="Theme.Example" parent="@android:style/Theme.Holo.Light">
    <item name="android:popupMenuStyle">@style/PopupMenu.Example</item>
    .......
    .......
</style>

并通过定义您的样式来覆盖android:popupMenuStyle 属性:

<style name="PopupMenu.Example" parent="@android:style/Widget.Holo.Light.ListPopupWindow">
    <item name="android:popupBackground">@drawable/menu_dropdown_panel_example</item>
</style>

@drawable/menu_dropdown_panel_example 是这样的:

您可以选择使用与上述类似的图像,也可以使用Color 资源。

这是默认的ActionBar。不是ActionBarSherlock。 ;-)

ActionBar 可以使用这个很酷的网站轻松创建样式:http://jgilfelt.github.com/android-actionbarstylegenerator/。在决定风格之前,我通常会在这里做一些实验。此外,它还可以让您下载样式和所有必要的资源。只需将它们插入您的应用程序,您就可以开始使用了。 :-)

更新:我认为我造成了一些混乱,导致您的应用下拉菜单中的阴影丢失。您可能已经替换了我在原始建议中列出的Style 中的所有&lt;items&gt;。编辑应该可以解决这个问题。

更新 2:

使用这些图像资源而不是您当前使用的 @android:color/white 值。它们的顺序是 XHDPI、HDPI 和 MDPI。保存它们并在样式定义中使用它们。

【讨论】:

popupBackground 工作,但现在我想念盒子上的阴影。有没有办法让它更容易编码,而不是添加所有其他行 @Codebox:抱歉耽搁了。我认为混乱是我的错。您不需要添加其余的行。只需几分钟即可完成编辑。对不起。 :-( 我只添加了你现在拥有的那些行,但阴影仍然被删除了。我使用@android:color/white for android:popupBackground @Codebox:啊。那是因为@android:color/white 没有阴影。如果您注意到附加的图像,它有自己的影子。让我创建一组您可以使用的快速图像,而不是 @android:color/white 属性。那会让你的影子回来。 ;-)【参考方案2】:

尝试从ActionBarStyleGenerator 服务获取样式。它具有预览功能,并使所有必要的可绘制、xml 和样式。 在那里您可以轻松找到并更改所需的颜色,然后在源中找到它(在您的情况下是 android:popupBackground)。

【讨论】:

【参考方案3】:

您可以简单地覆盖主题中的 itemBackground 项目:

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <item name="android:itemBackground">@color/skyBlue</item>
</style>

【讨论】:

以上是关于更改 actionBar 下拉背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

动作栏文字颜色

Kivy:更改 ActionBar 的背景颜色

如何使用 XML 更改 ActionBarActivity 的 ActionBar 的背景颜色?

Android微调器下拉菜单背景颜色更改

更改 ActionBarSherlock 背景颜色

如何更改下拉按钮的背景颜色(Vue Bootstrap)