美文网首页
menu item icon in toolbar overfl

menu item icon in toolbar overfl

作者: 王诛魔Phy | 来源:发表于2017-01-06 15:37 被阅读274次

stackoverflow解决

这就是问题所在
overflow menu的几个Item都不显示icon 贴一部分menu
<item android:id="@+id/action_zone" 
  android:title="@string/zone" 
  android:orderInCategory="90" 
  android:icon="@mipmap/biz_forum_author_icon" 
  app:showAsAction="always" />
<item android:id="@+id/action_share" 
  android:orderInCategory="90" 
  android:title="action_share"
  app:showAsAction="always"/>
<item android:id="@+id/action_weather" 
  android:title="人之初" 
  android:orderInCategory="100"   
  android:icon="@mipmap/biz_main_menu_weather"   
  app:showAsAction="never"/> 
<item android:id="@+id/action_offline" 
  android:title="性本善" 
  android:orderInCategory="100" 
  android:icon="@mipmap/biz_main_menu_offline" 
  app:showAsAction="never"/>

可以看到,每个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 overfl

      本文链接:https://www.haomeiwen.com/subject/ntklyttx.html