Android 菜单背景黑色,带有 Theme.AppCompat?

问题描述 投票:0回答:7

由于我的应用程序中的某些原因,当使用“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>

android xml colors android-actionbar android-actionbar-compat
7个回答
34
投票

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

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

希望这有帮助。


4
投票

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

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

4
投票

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

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

2
投票

参考这个链接

这里接受的答案对我有用。我只是在这里再次重复同样的答案。 将以下内容添加到您的工具栏 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


1
投票

我不鼓励这行:

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

在我的设备上,菜单弹出动画表现得相当难看。相反,只使用这个就足够了:

<style name="PopupMenuStyle" parent="Theme.AppCompat.Light">
</style>

1
投票

我尝试将其添加到工具栏中:

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

但是在夜间模式下,背景将为白色,文本也是白色。 (这仅在白天模式下有用,或者您的应用程序不遵循白天/夜间切换)

另一个尝试,我为菜单弹出添加了这种样式,正如 Pojaa 上面所说:

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

但这会产生一个效果:当您单击菜单时,它首先显示弹出菜单的白色背景(白色背景),然后显示项目,这非常不利于用户体验。也许Android随着时间的推移而改变,体验也会有所不同!

你应该按照你的愿望尝试这个:

app:popupTheme="@style/Theme.AppCompat.DayNight"

这是迟到的答案,但希望对其他人有帮助!


0
投票

不确定这是否有帮助。这可能是一个更简单的解决方案。在 AppCompat - theme_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>
© www.soinside.com 2019 - 2024. All rights reserved.