Android 菜单覆盖背景颜色
Android menu overlay background color
所以我一直在寻找一种方法来更改我的菜单弹出背景颜色,但我现在真的没有主意了...
首先,这是我的工具栏:
<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,但是好像没什么效果。
我知道这是一个经常被问到的问题,但我已经阅读了很多,所以我可能只是没有看到明显的错误...
改变这个:
<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"
希望这对您有所帮助。
要使用深色主题颜色,您可以在 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"/>
所以我一直在寻找一种方法来更改我的菜单弹出背景颜色,但我现在真的没有主意了... 首先,这是我的工具栏:
<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,但是好像没什么效果。
我知道这是一个经常被问到的问题,但我已经阅读了很多,所以我可能只是没有看到明显的错误...
改变这个:
<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"
希望这对您有所帮助。
要使用深色主题颜色,您可以在 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"/>