menu item icon in toolbar overflow menu

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); 
}
终于解决了
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,449评论 25 709
  • 原文地址:http://www.android100.org/html/201606/06/241682.html...
    AFinalStone阅读 4,889评论 0 1
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,696评论 1 92
  • 本文会不定期更新,推荐watch下项目。如果喜欢请star,如果觉得有纰漏请提交issue,如果你有更好的点子可以...
    天之界线2010阅读 18,760评论 19 153
  • 我们男孩子还喜欢玩一种叫“扯呼鸡婆”的小把戏。用一块宽三公分左右、长五公分左右、厚半公分的小竹板,中间钻一个小孔,...
    梦醉捞刀河阅读 2,463评论 0 0

友情链接更多精彩内容