ActionBar中Menu隐藏后Item无法显示Icon

官方中ActionBar如果你隐藏了Menu Item,默认是不会显示Icon。虽然官方不支持,但是有时会使用到相关的效果,所以经过无数次的Google,终于找到了需要的方法和信息。

这个是在CSDN中guolin博主发现的方法,是利用反射来完成的,具体博客地址在这里

@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 (Exception e) {  
            }  
        }  
    }  
    return super.onMenuOpened(featureId, menu);  
} 

但是,但是,但是(重要的事情说三遍)如果你是使用的AppCompactActivity,这里的onMenuOpen可能就不会调用了,至少对于我是这样的

接下来我在stackoverflow上面发现另外的一种解决方法,同样是使用反射来达成效果,但是调用的地方不一样,如果你是用的是AppCompactActivity,可以使用下面的方法

@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(), "onMenuOpened...unable to set icons for overflow menu", e);           
            }
        }    
    } 
   return super.onPrepareOptionsPanel(view, menu);
}

写下来给那些踩到坑的人~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,025评论 25 708
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,509评论 0 17
  • 我永远都在寻求别人的善意, 又永远都在抗拒别人的怜悯, 永远都在寻求自我的救赎, 又永远都在抗拒自我的回归。 我总...
    做风阅读 399评论 1 0
  • 显现-练习——使用 我行,一切行,我行任之行 选好人,做对事 懂人事 体验价值从满足身边人的需求开始 日精进第...
    于英彬阅读 147评论 0 0