工具栏选项菜单背景颜色

17

我正在使用Android工具栏。我只想改变溢出菜单的背景颜色。但是它没有改变。

样式XML

<style name="MyDarkToolbarStyle" parent="Widget.AppCompat.Toolbar">
    <item name="popupTheme">@style/PopupMenuStyle</item>
    <item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
</style>

<style name="PopupMenuStyle" parent="android:Widget.Holo.Light.PopupMenu">
    <item name="android:popupBackground">@android:color/white</item>
</style>

工具栏 XML

    <android.support.v7.widget.Toolbar
    android:id="@+id/tool_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/ColorPrimary"
    android:elevation="2dp"
    android:theme="@style/MyDarkToolbarStyle" />
4个回答

79

要更改工具栏选项菜单颜色,请将此代码添加到您的工具栏元素中

app:popupTheme="@style/MyDarkToolbarStyle"

然后在您的styles.xml中定义弹出式菜单样式

<style name="MyDarkToolbarStyle" parent="ThemeOverlay.AppCompat.Light">
    <item name="android:colorBackground">@color/mtrl_white_100</item>
    <item name="android:textColor">@color/mtrl_light_blue_900</item>
</style>

请注意,您需要使用colorBackground不是background。后者会应用于所有内容(包括菜单本身和每个菜单项),前者只适用于弹出式菜单。


我认为popupTheme属性只在API 21及以上版本中有效。 - Ignacio Guerendiain
这对我没用,但是这个有用。 - Android
如果我想要带边框的背景怎么办? - user25
@CapitanNerd 不,使用支持库... 而且是 app:popupTheme,不是 android:popupTheme - user25
2
对我来说,android:colorBackground 没有起作用,但是 android:background 起了作用。 - Taylor

11

编辑:

如果您只想要一个白色溢出弹出菜单,请按照以下步骤操作

<android.support.v7.widget.Toolbar
    android:id="@+id/tool_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/ColorPrimary"
    android:elevation="2dp"
    app:theme="@style/MyDarkToolbarStyle"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"" />

移除你的样式XML中冗余的popupTheme。

<style name="MyDarkToolbarStyle" parent="Widget.AppCompat.Toolbar">
     <item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
</style>

你还应该将这个内容包含在你的顶级(父级)布局中

xmlns:app="http://schemas.android.com/apk/res-auto"

2
不,工具栏来自支持库,并且向后兼容。 - Kuffs

10

最简单的方法

如果您只想要一个白色的溢出弹出菜单,只需执行以下操作:

<android.support.v7.widget.Toolbar
    android:id="@+id/tool_bar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@color/ColorPrimary"
    android:elevation="2dp"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

另外,看一下android:layout_height属性的值。


1

Option Menu

这是我如何更改MaterialToolbarToolbar选项菜单的背景颜色,我使用了popupMenuBackground属性(android:colorBackground在API 21或更高版本中对我无效)在自定义样式中应用该样式到工具栏的popupTheme属性。
在布局文件中:
<com.google.android.material.appbar.MaterialToolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    app:layout_collapseMode="pin"
    app:menu="@menu/main_menu"
    app:popupTheme="@style/MenuStyle"
    app:title="@string/app_name" />

styles.xml 文件中:
<style name="MenuStyle" parent="Theme.MaterialComponents.Light">
    <item name="popupMenuBackground">@color/colorSecondary</item>
    <item name="android:textColor">@color/white</item>
</style>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接