Android 在上下文操作栏的溢出菜单中显示图标

Android 在上下文操作栏的溢出菜单中显示图标,android,android-actionbar,android-menu,android-actionbar-compat,Android,Android Actionbar,Android Menu,Android Actionbar Compat,我知道如何在ActionBar的溢出菜单中显示图标。这就是我用的 @Override public boolean onMenuOpened(int featureId, Menu menu) { if (featureId == Window.FEATURE_ACTION_BAR && menu != null) { if (menu.getClass().getSimpleName().equals("MenuBuilde

我知道如何在ActionBar的溢出菜单中显示图标。这就是我用的

  @Override
    public boolean onMenuOpened(int featureId, Menu menu) {
        if (featureId == Window.FEATURE_ACTION_BAR && menu != null) {

            if (menu.getClass().getSimpleName().equals("MenuBuilder")) {
                try {
                    Method m = menu.getClass().getDeclaredMethod(
                            "setOptionalIconsVisible", Boolean.TYPE);
                    m.setAccessible(true);
                    m.invoke(menu, true);
                } catch (NoSuchMethodException e) {
                    Log.e("TAG", "onMenuOpened", e);
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            }
        }
        return super.onMenuOpened(featureId, menu);
    }
但当我长按ListView中的任何项目时,CAB就会启动。现在,当我打开驾驶室的溢出菜单时,菜单上没有任何图标。我该怎么做


提前谢谢。

我等了两天,但没有得到任何答复。所以我自己解决了

这里的想法很简单。您需要在中创建自己的溢出项,并创建嵌套菜单以显示图标和文本

请参见下面的示例代码

<item
        android:id="@+id/overflow"
        android:icon="@drawable/ic_overflow_white"
        android:orderInCategory="201"
        android:title="@string/overflow"
        app:showAsAction="always">

        <menu>
            <item
                android:id="@+id/cab_menu_select_all"
                android:icon="@drawable/ic_select_all_grey"
                android:orderInCategory="100"
                android:title="@string/cab_menu_select_all"
                app:showAsAction="always|withText"></item>
        </menu>
    </item>


这里的技巧是创建嵌套菜单。您可以添加任意数量的项目。

这里有谁能帮我一下吗?此解决方案使用反射,我认为它无法通过proguard模糊处理存活下来。是的。但是,如果顶层菜单中有足够的项,使溢出菜单由系统本身显示,该怎么办呢。那么,我们是否有两个溢出:一个是“假”溢出,另一个是系统溢出?是的,在这些情况下会发生这种情况。