更改默认弹出菜单子菜单箭头

时间:2017-05-27 21:04:52

标签: android xml popup popupmenu

我正在使用默认的PopupMenu。我已经用我的XML风格定制了它,现在它有一种黑暗的风格。但我现在有一个问题:请看这个屏幕我已经准备好了:

enter image description here

正如您所见,箭头很难看到,我真的希望现在避免使用弹出窗口。有什么方法可以将它改成白色箭头吗?

2 个答案:

答案 0 :(得分:1)

已经很长时间了,但是如果其他人遇到这个问题,您可以利用一种样式来解决此问题。

看起来箭头的颜色由android:textColorSecondary控制,因此,如果您以编程方式生成弹出菜单,则可以执行以下操作(在Kotlin中):

val contextThemeWrapper = ContextThemeWrapper(context, R.style.PopupMenuStyle)
val popupMenu = PopupMenu(contextThemeWrapper, view)
val menu = popupMenu.menu
menu.addSubMenu(groupId, itemId, order, groupTitle)
menu.add(groupId, itemId, order, title1)
menu.add(groupId, itemId, order, title2)
etc...

,然后在styles.xml中定义您的PopupMenuStyle:

<style name="PopupMenuStyle" parent="@style/<some.parent.style>">
    <!--this makes an the arrow for a menu submenu transparent-->
    <item name="android:textColorSecondary">@android:color/transparent</item>
</style>

答案 1 :(得分:0)

自定义主题并设置 listMenuViewStyle

<style name="AppTheme" parent="Theme.MaterialComponents.Light">
    <item name="listMenuViewStyle">@style/listMenuViewStyle</item>
</style>

设置子菜单箭头

<style name="listMenuViewStyle" parent="Base.Widget.AppCompat.ListMenuView">
    <item name="subMenuArrow">@drawable/icon_sub_menu</item>
</style>

将自定义主题应用于活动

<activity android:name=".material.MyTopAppBarActivity"
    android:theme="@style/AppTheme"/>