如何在 Android studio 中将图像添加到溢出菜单?

How to add images to overflow menu in Android studio?

我正在为最新的 android 版本开发溢出菜单,因为我正在这样做,文本项目被添加到溢出菜单但项目图像没有添加。所以请帮助我了解 如何将图像添加到溢出菜单

我附上截图和代码。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/new_game"
    android:icon="@drawable/ic_new_game"
    android:title="@string/new_game"
    android:showAsAction="ifRoom"/>

在您的菜单 xml 中,使用以下语法嵌套菜单,您将开始获得带有图标的菜单

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

    <item
        android:id="@+id/empty"
        android:icon="@drawable/ic_action_overflow"
        android:orderInCategory="101"
        android:showAsAction="always">
        <menu>
            <item
                android:id="@+id/new_game"
                android:icon="@drawable/ic_new_game"
                android:showAsAction="always|withText"
                android:title="@string/new_game" />
        </menu>
    </item>

</menu>

遗憾的是,默认情况下 PopupMenu 支持图标。

备选方案包括创建您自己的 class 以扩展 PopupMenu 或更简单地切换到使用 ActionBar。有一个 GitHub 存储库,用于 Android 带有图标的兼容性弹出菜单,这可能会有帮助。

在这三个选项中,我建议使用 ActionBar,因为 android 似乎大力推动使用 ActionBar 作为其指南中传统 header 菜单的最佳实践。

希望对您有所帮助。

@source -> PopupMenu Item Icons

这是一个常见问题,使用 Reflect 使图标可见

@Override  
public boolean onCreateOptionsMenu(Menu menu)  
{  

    setIconEnable(menu, true);  

    return super.onCreateOptionsMenu(menu);  
}  


private void setIconEnable(Menu menu, boolean enable)  
{  
    try   
    {  
        Class<?> clazz = Class.forName("com.android.internal.view.menu.MenuBuilder");  
        Method m = clazz.getDeclaredMethod("setOptionalIconsVisible", boolean.class);  
        m.setAccessible(true);  
      m.invoke(menu, enable);  

    } catch (Exception e)   
    {  
        e.printStackTrace();  
    }  
}