如何在ActionBar中的溢出菜单中显示图标?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (160)

我知道使用本机API是不可能的。有办法实现这种观点吗?

提问于
用户回答回答于

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

<item
    android:id="@+id/empty"
    android:icon="@drawable/ic_action_overflow"
    android:orderInCategory="101"
    android:showAsAction="always">
    <menu>
        <item
            android:id="@+id/action_show_ir_list"
            android:icon="@drawable/ic_menu_friendslist"
            android:showAsAction="always|withText"
            android:title="List"/>
    </menu>
</item>

用户回答回答于

一般来说,先前发布的答案是可以的。但它基本上删除了溢出菜单的默认行为。比如,有多少图标可以显示在不同的屏幕大小上,然后当它们无法显示时,就会出现在溢出菜单中。通过以上操作,你将删除许多重要的功能。

更好的方法是告诉溢出菜单直接显示图标。可以通过向活动中添加以下代码来完成此操作。

@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);
}

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励