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); } 相关资源:敏捷开发V1.0.pptx