在Android中没有显示的菜单图标
我想添加菜单处理程序到我的项目。 我也阅读http://developer.android.com/guide/topics/ui/menus.html ,它非常简单,但图标不显示。 我很困惑。 我甚至以编程方式添加了一个菜单项。
我的代码是:
@Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, 0, 0, "Quit").setIcon(R.drawable.ic_launcher); getMenuInflater().inflate(R.layout.menu, menu); return true; }
并在xml中:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <!-- Single menu item Set id, icon and Title for each menu item --> <item android:id="@+id/menu_bookmark" android:icon="@drawable/update" android:title="@string/Update" /> </menu>
如果您在Android 3.0+上运行代码,菜单中的图标不会按devise显示。 这是Google的devise决定。
您可以在Android开发者博客上阅读更多关于它的内容。
无论系统做出什么样的deviseselect,您都可以通过解决这个问题的答案来解决这个问题
下面的代码完整性。 testing工作在android.support.v7.app.ActionBarActivity
@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(NoSuchMethodException e){ Log.e(TAG, "onMenuOpened", e); } catch(Exception e){ throw new RuntimeException(e); } } } return super.onMenuOpened(featureId, menu); }
老问题,但希望它会帮助别人。
使用下面的代码:
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/menu_item_share" android:title="Share" app:showAsAction="always" android:icon="@drawable/share" /></menu>
注意我用app:showAsAction
而不是android:showAsAction
经过长时间的尝试,我发现下面的解决scheme,可能会帮助别人节省时间。 基本上,“lbarbosa”提供的解决scheme,我真诚地感谢他。
试过这个基于以前的答案,它工作正常,至less与更新版本的支持库(25.1):
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); if(menu instanceof MenuBuilder){ MenuBuilder m = (MenuBuilder) menu; m.setOptionalIconsVisible(true); } return true; }
你可以在你的XML元素中添加属性android:showAsAction="always"
。 然后它会在你的操作栏中显示相关的菜单选项作为一个图标。
请注意,它将代替菜单中的文字。
为了进一步阅读, 在这里看android:showAsAction 。
忘记所有这些,做这一步。 添加app:showsAsAction="always"
您的项目。 如果您使用android:showsAsAction="always"
您将无法获得解决scheme。 尝试添加应用程序属性到您的项目。
@Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, 0, 0, "androidDemo").setIcon(R.drawable.ic_launcher); getMenuInflater().inflate(R.layout.menu, menu); return true; }
并在xml中:
<item android:id="@+id/menuUpdate" android:icon="@drawable/update_icon" android:title="@string/Update" android:showAsAction="always"/>
- 如何在我的Android客户端上启用堆更新
- 找不到与给定名称匹配的资源'@ style / Theme.Holo.Light.DarkActionBar'
- Android Studio中的应用程序安装失败
- 你能在XML布局中设置“标签顺序”吗?
- 如何在Android Studio(Gradle)中添加apache commons集合
- 错误:ConnectionResult {statusCode = INTERNAL_ERROR,resolution = null}
- android GCM注册ID最大长度
- 将Android设备连接到本地主机上的Web服务
- Android:如何在android studio中configurationFFMPEG最新版本?