Android 菜单叠加背景色

Bor*_*ief 3 android background menu colors android-appcompat

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

 <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"/>
Run Code Online (Sandbox Code Playgroud)

以及我在没有任何背景变化的情况下应用的 2 个主题:

<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>
Run Code Online (Sandbox Code Playgroud)

这使我的项目背景颜色看起来是蓝色的,因为我将应用程序的主要和次要颜色设置为蓝色。

我发现将项目菜单颜色更改为白色的一种解决方案是在 MainActionBar.Popup 中将 android:background 设置为白色,如下所示:

Widget.AppCompat.PopupMenu 与 android:background 设置为 @android:color/white

虽然这确实将背景颜色更改为白色,但它也会在动画开始之前将弹出窗口后面的框渲染为白色,这会破坏动画。

另一种选择是将 android:itemBackground 设置为白色,如下所示:

Widget.AppCompat.PopupMenu 与 android:itemBackground 设置为 @android:color/white

如您所见,动画现在看起来不错,但项目背景并非完全白色......

我也试过 android:popupBackground 但它似乎没有任何效果。

我知道这是一个经常被问到的问题,但我已经阅读了很多,所以我可能只是没有看到明显的错误......

tah*_*pam 5

改变这个:

<style name="MainActionBar.Popup" parent="Widget.AppCompat.PopupMenu">
    <item name="android:textColor">@color/primary_text</item>
</style>
Run Code Online (Sandbox Code Playgroud)

和:

<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>
Run Code Online (Sandbox Code Playgroud)

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

<item name="android:background">@color/primary</item>
Run Code Online (Sandbox Code Playgroud)

将此属性添加到 Toolbar 标签:

android:background="?attr/colorPrimary"
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。