【问题标题】:Android menu overlay background colorAndroid 菜单叠加背景颜色
【发布时间】:2017-08-01 05:42:57
【问题描述】:

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

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

以及我应用的 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>

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

我发现将项目菜单颜色更改为白色的一种解决方案是在我的 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 但它似乎没有任何效果。

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

【问题讨论】:

  • 使用android:background="?attr/colorPrimaryDark"

标签: android colors menu background android-appcompat


【解决方案1】:

改变这个:

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

希望这会有所帮助。

【讨论】:

  • 我刚试过。默认情况下,我的菜单有蓝色背景和白色文本。如果我将您的更改应用为黑色,背景设置为白色,这就是它的外观:picture。如您所见,更改文本颜色有效,但背景颜色无效:(
  • 您的工具栏背景颜色设置会覆盖您的自定义弹出式样式。尝试在工具栏标签下的 xml 文件中设置背景颜色。我已经对其进行了测试并且正在工作。检查我编辑的答案;)
  • 哇,你是对的。这正是我想要的!非常感谢你,你刚刚拯救了我的理智! :D
【解决方案2】:

要使用深色主题颜色,您可以在您的 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"/>  

【讨论】:

    猜你喜欢
    • 2011-02-12
    • 2014-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多