menu item icon in toolbar overflow menu

stackoverflow解决

menu item icon in toolbar overflow menu_第1张图片
这就是问题所在

overflow menu的几个Item都不显示icon 贴一部分menu



 

可以看到,每个Item都添加了

icon android:icon=”@mipmap/biz_main_menu_offline” 

然而都不显示
解决方案
1.这个方案虽然没有解决我的问题,依旧不显示,但是解决了其他人的问题

/** 
* 利用反射让隐藏在Overflow中的MenuItem显示Icon图标
 * @param featureId 
* @param menu 
* onMenuOpened方法中调用 
*/ public static void setOverflowIconVisible(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 (Exception e) { } 
        }
 }
 }

然后在这里调用即可

//显示溢出图标 
@Override 
public boolean onMenuOpened(int featureId, Menu menu) { 
    setOverflowIconVisible( featureId, menu);
   return super.onMenuOpened(featureId, menu); 
}

2.后来尝试的一些方案就不说了,直接上可用的方案(解决我问题的)

//解决ICON不显示 
@Override 
protected boolean onPrepareOptionsPanel(View view, Menu menu) {
 if (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 (Exception e) {
             Log.e(getClass().getSimpleName(), "unable to set icons for overflow menu", e); 
           } 
        } 
    } 
    return super.onPrepareOptionsPanel(view, menu); 
}
menu item icon in toolbar overflow menu_第2张图片
终于解决了

你可能感兴趣的:(menu item icon in toolbar overflow menu)