我使用的是从Android4.3(API18级)开始提供的新的v7 appcompat库。
无论在showAsAction中为菜单项指定了什么,它都不会显示-它总是创建溢出菜单图标,并将一个菜单项放在菜单下。
尝试将菜单添加到活动中,如下所示:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_sizes, menu);
return true;
}
下面是我的菜单xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_add_size"
android:title="@string/menu_add_item"
android:orderInCategory="10"
android:showAsAction="always"
android:icon="@android:drawable/ic_menu_add" />
</menu>
这是新的支持库v7的错误,还是只是代码有问题?我以前在ActionBarSherlock中使用过很多次类似的代码。
发布于 2013-07-29 07:43:15
我自己想明白了。使用支持库v7,showAsAction应该放在一个自定义名称空间下,如下所示:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:balloonberry="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/menu_add_size"
android:title="@string/menu_add_item"
android:orderInCategory="10"
balloonberry:showAsAction="always"
android:icon="@android:drawable/ic_menu_add" />
</menu>
发布于 2013-11-21 19:27:03
还要确保在ActionBarActivity.onCreateOptionsMenu()方法中使用正确的充气器。
正确的解决方案:
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.menu_example, menu);
错误的解决方案:
MenuInflater menuInflater = new MenuInflater(this);
menuInflater.inflate(R.menu.menu_example, menu);
发布于 2015-12-19 00:14:01
得到了同样的问题,但在Android 5上。我有3个项目,但操作系统忽略了我的属性“总是”,只显示了2个项目。下面是我的解决方案:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
Log.d(TAG, "onCreateOptionsMenu()");
inflater.inflate(R.menu.your_menu, menu);
for (int j = 0; j < menu.size(); j++) {
MenuItem item = menu.getItem(j);
Log.d(TAG, "set flag for " + item.getTitle());
item.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS);
}
}
https://stackoverflow.com/questions/17914017
复制相似问题