设置 Android 工具栏 overFlow 菜单样式的问题(带有描边线的圆角)
problem to set Android toolbar overFlow menu style (rounded corner with stroke line)
我想要做的是获得一个带有圆角和笔划线的简单菜单,如下所示:
但我得到的是:
首先我在 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" >
对于 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>
我想要做的是获得一个带有圆角和笔划线的简单菜单,如下所示:
但我得到的是:
首先我在 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" >
对于 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>