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); 
}
終于解決了
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,316評論 25 708
  • 原文地址:http://www.android100.org/html/201606/06/241682.html...
    AFinalStone閱讀 994評論 0 1
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,801評論 1 92
  • 本文會不定期更新,推薦watch下項目。如果喜歡請star,如果覺得有紕漏請提交issue,如果你有更好的點子可以...
    天之界線2010閱讀 18,391評論 19 153
  • 我們男孩子還喜歡玩一種叫“扯呼雞婆”的小把戲。用一塊寬三公分左右、長五公分左右、厚半公分的小竹板,中間鉆一個小孔,...
    夢醉撈刀河閱讀 315評論 0 0