Как отобразить значки в контекстном меню в android? - PullRequest
0 голосов
/ 19 февраля 2020

Я создаю контекстное меню, подобное этому

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        registerForContextMenu(rootView)
}

override fun onCreateContextMenu(menu: ContextMenu?, v: View?, menuInfo: ContextMenu.ContextMenuInfo?) {
    super.onCreateContextMenu(menu, v, menuInfo)
    menuInflater.inflate(R.menu.main_menu, menu)
}

main_menu. xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/settings"
        android:icon="@drawable/ic_settings_24dp"
        android:title="Launcher settings"/>
    <item android:id="@+id/widgets"
        android:icon="@drawable/ic_widgets_24dp"
        android:title="Widgets" />
    <item android:id="@+id/wallpaper"
        android:icon="@drawable/ic_wallpaper_24dp"
        android:title="Wallpaper" />
</menu>

Как мне показывать подобные иконки? (изображение из https://material.io/components/menus/#anatomy)

enter image description here

Может быть, можно как-то получить доступ к значку через отражение? Я нашел пример для всплывающего меню, но, к сожалению, оно не работает для контекстного меню.

try {
    val fieldPopupMenu = PopupMenu::class.java.getDeclaredField("mPopup")
    fieldPopupMenu.isAccessible = true
    val mPopup = fieldPopupMenu.get(popupMenu)
    mPopup.javaClass
        .getDeclaredMethod("setForceShowIcon", Boolean::class.java)
        .invoke(mPopup, true)
} catch (e: Exception){
    Log.e(localClassName, "Error showing menu icons", e)
} finally {
    popupMenu.show()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...