首页 > 解决方案 > 设置Android工具栏overFlow菜单样式的问题(带笔划线的圆角)

问题描述

我想做的是得到一个带有圆角和笔划线的简单菜单,如下所示:我的最终目标

但我得到的是:

我得到了什么

首先,我在drawable(drop_down_back_0.xml)中制作了一个带有波纹的形状:

<ripple
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="#C54747">
    <item>
        <shape android:shape="rectangle" >
            <solid android:color="@color/colorAccent" />
            <stroke android:color="@color/colorPrimary"  android:width="1dp"/>
            <corners android:radius="30dp"/>
        </shape>
    </item>
</ripple>

然后我以一种风格使用它:

   <style name="toolbarMenuStyle" parent="Theme.AppCompat.DayNight.NoActionBar">
        <item name="android:colorBackground">@android:color/transparent</item>
        <item name="android:textColor">@color/colorPrimaryDark</item>
        <item name="android:background">@drawable/drop_down_back_0</item>
    </style>

最后,我在我的 activity_layout.xml 中使用了该样式:

.
.
.
 <com.google.android.material.appbar.MaterialToolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="#526C98"
        android:elevation="10dp"
        app:titleTextColor="#fff"
        app:popupTheme="@style/toolbarMenuStyle" >

标签: androidmaterial-designandroid-toolbarandroid-stylesoverflow-menu

解决方案


对于 OverflowMenu,您可以在应用主题中定义actionOverflowMenuStyle属性。

<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
   <item name="actionOverflowMenuStyle">@style/custompopupOverflowMenu</item>
</style>

和:

  <style name="custompopupOverflowMenu" parent="@style/Widget.MaterialComponents.PopupMenu.Overflow">
    <item name="android:popupBackground">@drawable/my_mtrl_popupmenu_background</item>   
  </style>

背景是这样的:

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="?attr/colorSurface"/>

    <corners
        android:bottomLeftRadius="16dp"
        android:bottomRightRadius="16dp"
        android:topLeftRadius="16dp"
        android:topRightRadius="16dp"/>

    <stroke android:color="@color/colorPrimary" 
                  android:width="1dp"/>

    <padding
        android:bottom="8dp"
        android:top="8dp"/>

</shape>

在此处输入图像描述


推荐阅读