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

时间:2015-03-26 16:04:17

标签: android xml colors android-actionbar android-actionbar-compat

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

screenshot

我尝试使用一些在线资源手动设置菜单的背景颜色,但似乎都没有工作。有谁知道可能导致这个问题的原因?下面是我的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>

7 个答案:

答案 0 :(得分:23)

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

  1. 在styles.xml中创建样式

    <style name="PopupMenuStyle" parent="Theme.AppCompat.Light">
         <item name="android:background">@android:color/white</item>
    </style>
    
  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" />
    
  3. 希望这有帮助。

答案 1 :(得分:2)

您可以使用appNS定义popupTheme,如下所示。

app:popupTheme="@style/ThemeOverlay.AppCompat.Light"

答案 2 :(得分:1)

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

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而不是背景。后者将应用于所有内容(菜单本身和每个菜单项),前者仅适用于弹出菜单。

答案 3 :(得分:0)

请参阅此link

这里接受的答案对我有用。我在这里再次重复相同的答案。 将以下内容添加到工具栏xml

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
                                   xmlns:app="http://schemas.android.com/apk/res-auto"
                                   android:layout_width="fill_parent"
                                   android:layout_height="wrap_content"
                                   android:background="@color/toolbarbackground"
                                   android:elevation="4dp"
                                   app:popupTheme="@style/YOUR_THEME_HERE"
                                   android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    >

在styles.xml中:

 <style name="YOUR_THEME_HERE" parent="ThemeOverlay.AppCompat.Light">
        <item name="android:colorBackground">#000000</item>
        <item name="android:textColor">#ffffff</item>
    </style>

以上样式在黑色背景上显示白色字体。

归功于#Eugen Pechanec

答案 4 :(得分:0)

不确定这是否有帮助。这可能是一个更简单的解决方案。在AppCompat - themes_base.xml中,您将找到以下部分。

<!-- Panel attributes -->
            <item name="panelMenuListWidth">@dimen/abc_panel_menu_list_width</item>
            <item name="panelMenuListTheme">@style/Theme.AppCompat.CompactMenu</item>
            <item name="panelBackground">@drawable/abc_menu_hardkey_panel_mtrl_mult</item>
            <item name="android:panelBackground">@android:color/transparent</item>
            <item name="listChoiceBackgroundIndicator">@drawable/abc_list_selector_holo_dark</item>

在您的应用中创建主题并应用颜色。

<style name="Theme.Base" parent="@style/Theme.AppCompat.Light.DarkActionBar">
        <item name="android:panelBackground">@android:color/black</item>
    </style>

答案 5 :(得分:0)

我不鼓励这一行:

elif

在我的设备上,菜单弹出动画的行为非常难看。相反,仅使用此命令就足够了:

    <item name="android:background">@android:color/white</item>

答案 6 :(得分:0)

我所做的是将 popUpTheme 更改为 DayNight 所以使用

app:popupTheme="@style/ThemeOverlay.AppCompat.DayNight">

`