Android 工具栏弹出菜单不显示图标

标签 android android-menu android-toolbar

我试图为我的工具栏显示一个下拉菜单,其中包括文本和图标:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/menu_add"
        android:title="@string/menu.add"
        android:icon="@drawable/ic_add_black_24dp"
        app:showAsAction="always" />

    <item
        android:id="@+id/menu_edit"
        android:title="@string/menu.edit"
        android:icon="@drawable/ic_create_black_24dp"
        app:showAsAction="never" />

</menu>

menu_add 确实在工具栏本身上显示了图标,但 menu_edit 仅显示没有图标的文本。

这个答案:https://stackoverflow.com/a/19750717/197127表示 Google 已按设计删除了它,但没有提及如何覆盖它。

编辑

我还需要设备“菜单”按钮来显示相同​​的菜单。

最佳答案

我创建了这样的东西:

@SuppressLint("RestrictedApi")
fun Menu.showIcons() {
    (this as? MenuBuilder)?.setOptionalIconsVisible(true)
}

它基本上适用于任何菜单。

对于工具栏,您可以在 Activity 或 Fragment 中重写 onPrepareOptionsMenu ,并且在调用 super 之前只需调用 menu.showIcons() 或者您可以使用它与 PopupMenu 类似 PopupMenu(requireContext(),anchor).menu.showIcons()

关于Android 工具栏弹出菜单不显示图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30845768/

相关文章:

android - 从相同状态重新启动我的应用程序失败,糟糕 :(

c# - Xamarin Android - VpnService 阻止所有应用程序

android - 强制停止 Android 应用程序时不检索 Sqlite 数据库记录

java - 在android中编辑选项菜单项内容/设置

android - 自定义主题 ActionBar android(菜单不起作用)

java - Android - 在 XML 中定义的 AddContentView

android - Appcompat 工具栏不与抽屉导航一起显示

android - 使用自定义操作栏/工具栏 View 创建选项菜单

android - 通过 fragments 在 recyclerview 和 toolbar 之间共享元素

Android ActionBar 兼容性 : MenuItem. setActionView(View)