ActionBar中Menu隱藏后Item無法顯示Icon

官方中ActionBar如果你隱藏了Menu Item,默認(rèn)是不會顯示Icon。雖然官方不支持,但是有時會使用到相關(guān)的效果,所以經(jīng)過無數(shù)次的Google,終于找到了需要的方法和信息。

這個是在CSDN中guolin博主發(fā)現(xiàn)的方法,是利用反射來完成的,具體博客地址在這里

@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可能就不會調(diào)用了,至少對于我是這樣的

接下來我在stackoverflow上面發(fā)現(xiàn)另外的一種解決方法,同樣是使用反射來達(dá)成效果,但是調(diào)用的地方不一樣,如果你是用的是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);
}

寫下來給那些踩到坑的人~~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,765評論 25 709
  • ¥開啟¥ 【iAPP實現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 7,295評論 0 17
  • 我永遠(yuǎn)都在尋求別人的善意, 又永遠(yuǎn)都在抗拒別人的憐憫, 永遠(yuǎn)都在尋求自我的救贖, 又永遠(yuǎn)都在抗拒自我的回歸。 我總...
    做風(fēng)閱讀 520評論 1 0
  • 顯現(xiàn)-練習(xí)——使用 我行,一切行,我行任之行 選好人,做對事 懂人事 體驗價值從滿足身邊人的需求開始 日精進(jìn)第...
    于英彬閱讀 165評論 0 0

友情鏈接更多精彩內(nèi)容