Android菜单背景黑色与Theme.AppCompat?

roh*_*n32 12 xml android colors android-actionbar android-actionbar-compat

出于某种原因,在我的应用程序中,当使用"Theme.AppCompat"作为我的样式时,它使我的菜单黑色文本(我设置,因为我想要黑色文本)在深灰色背景上,如下所示:

截图

我尝试使用一些在线资源手动设置菜单的背景颜色,但似乎没有工作.有谁知道可能导致这个问题的原因?下面是我的style.xml,正如您所看到的,主应用主题条目中的两个底部元素是我尝试使用我在网上找到的东西来改变背景颜色.

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat">
    <item name="windowActionBar">false</item>
    <item name="android:windowBackground">@color/white_primary</item>
    <item name="android:textColor">@color/text_primary</item>
    <item name="android:textSize">@dimen/text_size_medium</item>
    <item name="colorAccent">@color/black_primary</item>
    <item name="android:popupMenuStyle">@style/PopupMenuStyle</item>
    <item name="android:panelFullBackground">@drawable/menu_full_bg</item>
</style>

<style name="PopupMenuStyle" parent="Theme.AppCompat.Light">
    <item name="android:popupBackground">@android:color/white</item>
</style>

<drawable name="menu_full_bg">#FFFFFF</drawable>
Run Code Online (Sandbox Code Playgroud)

Poo*_*oja 23

您可以更改弹出菜单的背景颜色,如下所示.

  1. 在styles.xml中创建一个样式

    <style name="PopupMenuStyle" parent="Theme.AppCompat.Light">
         <item name="android:background">@android:color/white</item>
    </style>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将此主题设置为您的toolbar弹出主题toolbar.xml

     <android.support.v7.widget.Toolbar     
        xmlns:app="http://schemas.android.com/apk/res-auto"    
        xmlns:android="http://schemas.android.com/apk/res/android"
    
            // Your code here
           app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
           app:popupTheme="@style/PopupMenuStyle" />
    
    Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.

  • 你是我的英雄.我很高兴我能哭.我无法相信我找到了一个真正适用于5.1.1的解决方案. (4认同)

nza*_*ala 5

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

app:popupTheme="@style/MyDarkToolbarStyle"
Run Code Online (Sandbox Code Playgroud)

然后在你的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>
Run Code Online (Sandbox Code Playgroud)

请注意,您需要使用 colorBackground 而不是背景。后者将应用于所有内容(菜单本身和每个菜单项),前者仅适用于弹出菜单。