android4.0已经默认icon是不显示的,即使你写了如下的菜单文件代码:
<item
android:title="@string/font_size"
android:icon="@drawable/font"
android:showAsAction="ifRoom|withText" />
菜单项目的图标也不能显示出来,解决办法如下:
在设置菜单的Activity中添加如下代码(我目前读不懂是啥意思,但是先能用再说):
private void setIconEnable(Menu menu, boolean enable)
{
try
{
Class<?> clazz = Class.forName("com.android.internal.view.menu.MenuBuilder");
Method m = clazz.getDeclaredMethod("setOptionalIconsVisible", boolean.class);
m.setAccessible(true);
//MenuBuilder实现Menu接口,创建菜单时,传进来的menu其实就是MenuBuilder对象(java的多态特征)
m.invoke(menu, enable);
} catch (Exception e)
{
e.printStackTrace();
}
}
对需要显示图标的菜单menu使用setIconEnable(menu,true), 如下:
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = new MenuInflater(this);
inflater.inflate(R.menu.menu_main,menu);
setIconEnable(menu,true); // 就是这一句使图标能显示
return super.onCreateOptionsMenu(menu);
}
若是上下文菜单就在onCreateContextMenu()方法中添加这行代码
重新运行,发现菜单项能显示图标了