材质工具栏菜单背景填充和颜色

Tom*_*m11 3 android menu android-toolbar material-components-android

我通过应用程序迁移到 Material design 1.5.0。我对工具栏使用以下代码(简化):

内部活动:

<include layout="@layout/toolbar_default" />
Run Code Online (Sandbox Code Playgroud)

工具栏_默认值:

<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.appbar.MaterialToolbar
    ...
    app:theme="@style/defaultToolbarTheme"
    ...
    />
Run Code Online (Sandbox Code Playgroud)

款式:

 <style name="defaultToolbarTheme" parent="Theme.MaterialComponents.NoActionBar">
     <item name="android:textColorPrimary">?app_toolbar_foreground_color</item>
     <item name="android:textColorSecondary">?app_toolbar_foreground_color</item>
     <item name="android:background">@drawable/item_background_menu</item>
     <item name="android:itemTextAppearance">@style/MyActionBar.MenuTextStyle</item>
 </style>

 <style name="MyActionBar.MenuTextStyle" parent="TextAppearance.AppCompat.Widget.ActionBar.Subtitle" />
Run Code Online (Sandbox Code Playgroud)

项目背景菜单:

<selector>
    <item android:drawable="@color/blue_click" android:state_pressed="true"/>
    <item android:drawable="@drawable/item_background_menu_drawable"/>
</selector>
Run Code Online (Sandbox Code Playgroud)

item_background_menu_drawable:

<shape>
    <solid android:color="itemColor"/>
</shape>
Run Code Online (Sandbox Code Playgroud)

颜色:

<color name="itemColor">#1155a2</color>
Run Code Online (Sandbox Code Playgroud)

迁移之前,工具栏菜单如下所示:

在此输入图像描述

迁移后,菜单项的工具栏列表出现了一些奇怪的顶部和底部边框/填充:

在此输入图像描述

有人可以告诉如何更改此填充的颜色(目前似乎是 Android 菜单中使用的默认灰色),或者更好的是,如何删除此填充?谢谢。

Zai*_*ain 5

为了删除此填充,请更改android:popupBackground由 attribute 定义的弹出菜单样式的属性actionOverflowMenuStyle

 <style name="defaultToolbarTheme" parent="Theme.MaterialComponents.NoActionBar">
    ...
    <item name="actionOverflowMenuStyle">@style/OverflowMenuStyle</item>
 </style>
Run Code Online (Sandbox Code Playgroud)
<style name="OverflowMenuStyle" parent="Widget.MaterialComponents.PopupMenu.Overflow">
    <item name="android:popupBackground">@null</item>
</style>
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,另一个解决方案是:返回到旧的 PopupMenu 溢出的样式,默认情况下不添加此填充:

<style name="OverflowMenuStyle" parent="Widget.AppCompat.PopupMenu.Overflow">
</style>
Run Code Online (Sandbox Code Playgroud)