安卓菜单覆盖层背景颜色

3

我正在寻找一种改变菜单弹出背景颜色的方法,但现在我真的没有什么想法了...首先,这是我的工具栏:

 <android.support.v7.widget.Toolbar
    android:id="@+id/main_actionbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:elevation="2dp"
    app:elevation="2dp"
    app:theme="@style/MainActionBar"
    app:popupTheme="@style/MainActionBar.Popup"/>

我使用了两个主题,没有进行任何背景更改:

<style name="MainActionBar" parent="Widget.AppCompat.Light.ActionBar">
    <item name="android:background">@color/primary</item>
    <item name="android:textColor">@android:color/white</item>
    <item name="android:textColorPrimary">@android:color/white</item>
    <item name="android:textColorSecondary">@android:color/white</item>
</style>
<style name="MainActionBar.Popup" parent="Widget.AppCompat.PopupMenu">
    <item name="android:textColor">@color/primary_text</item>
</style>

这使得我的项目背景颜色看起来是蓝色的,因为我将应用程序的主要和次要颜色设置为蓝色。
我发现将MainActionBar.Popup中android:background设置为白色可以将项目菜单颜色更改为白色,代码如下: Widget.AppCompat.PopupMenu with android:background set to @android:color/white 虽然这确实将背景色更改为白色,但也会在动画开始之前将弹出框后面的框变为白色,从而破坏了动画效果。
另一种选择是将android:itemBackground设置为白色,代码如下: Widget.AppCompat.PopupMenu with android:itemBackground set to @android:color/white 如您所见,动画现在看起来很好,但项目背景并不完全是白色的...
我也尝试过android:popupBackground,但似乎没有任何效果。
我知道这是一个经常被问到的问题,但我已经读了几十个帖子,所以可能只是我没有看到一个明显的错误...

2
使用 android:background="?attr/colorPrimaryDark" - shadygoneinsane
2个回答

5

将此更改为:

<style name="MainActionBar.Popup" parent="Widget.AppCompat.PopupMenu">
    <item name="android:textColor">@color/primary_text</item>
</style>

使用:

<style name="MainActionBar.Popup" parent="ThemeOverlay.AppCompat.Light">
    <item name="android:colorBackground">Your Background Color</item>
    <item name="android:textColor">Your Text Color</item>
</style>

从MainActionBar主题中删除以下内容:

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

在工具栏标签中添加此属性:

android:background="?attr/colorPrimary"

希望这能帮到您。

我刚试了一下。默认情况下,我的菜单具有蓝色背景和白色文本。如果我应用您的更改并将文本设置为黑色,背景设置为白色,则如下所示:[图片](http://i.imgur.com/aoe0tiG.png)。正如您所看到的,更改文本颜色有效,但背景颜色却没有 :( - BoroChief
1
你的工具栏背景颜色设置在样式中正在覆盖你的自定义弹出样式。尝试在Toolbar标签下的xml文件中设置背景颜色。我已经测试过了,它可以正常工作。请查看我的编辑答案 ;) - tahsinRupam
1
哇,你说得对。它正好按照我的要求工作!非常感谢,你刚刚拯救了我的理智!:D - BoroChief

0

要使用暗色主题颜色,您可以在styles.xml文件中添加以下行:

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

现在,在你的操作栏中设置这个主题

<androidx.appcompat.widget.Toolbar 
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:theme="@style/AppTheme.AppBarOverlay"        <-- HERE
   android:background="@android:color/transparent"
   android:minHeight="?attr/actionBarSize"/>  

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