为了账号安全,请及时绑定邮箱和手机立即绑定

带有图标的PopupMenu

带有图标的PopupMenu

慕尼黑8549860 2019-11-12 13:09:24
当然,我们这里使用的是SDK 11及更高版本。我打算做类似的事情: 我想在其中每个项目旁边PopupMenu放置一个图标。我创建了一个XML文件并将其放在中/menu:<menu xmlns:android="http://schemas.android.com/apk/res/android" >    <item        android:id="@+id/action_one"        android:title="Sync"        android:icon="@android:drawable/ic_popup_sync"        />    <item        android:id="@+id/action_two"        android:title="About"        android:icon="@android:drawable/ic_dialog_info"        /></menu>您已经注意到,在xml文件中,我正在定义所需的图标,但是,当弹出菜单显示时,它显示的是没有图标的图标。我应该怎么做才能使这两个图标出现?
查看完整描述

3 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

Android弹出菜单有一个隐藏的方法来显示菜单图标。使用Java反射将其启用,如下所示。


public static void setForceShowIcon(PopupMenu popupMenu) {

    try {

        Field[] fields = popupMenu.getClass().getDeclaredFields();

        for (Field field : fields) {

            if ("mPopup".equals(field.getName())) {

                field.setAccessible(true);

                Object menuPopupHelper = field.get(popupMenu);

                Class<?> classPopupHelper = Class.forName(menuPopupHelper

                        .getClass().getName());

                Method setForceIcons = classPopupHelper.getMethod(

                        "setForceShowIcon", boolean.class);

                setForceIcons.invoke(menuPopupHelper, true);

                break;

            }

        }

    } catch (Throwable e) {

        e.printStackTrace();

    }

}


查看完整回答
反对 回复 2019-11-12
  • 3 回答
  • 0 关注
  • 909 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信