我遇到与这些主题完全相同的问题:
No actions or icons showing on the actionbar; only in overflow
Menu items won't show up in the actiobar
没人提供解决方案,所以我想再提起一个。
我有一个xml文件my_menu.xml,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/delete"
android:showAsAction="ifRoom|withText"
android:icon="@drawable/ic_delete_image"
android:title="delete"/>
</menu>
我的活动扩展了ActionBarActivity并实现了这些方法:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.my_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.delete:
//delete something
break;
}
return(true);
}
在我的书中:“ifRoom的值意味着如果有空间,菜单项将出现在操作栏中” - 我已经测试过使用ifRoom,ifRoom | withText和always,但项目总是结束在溢出菜单中。我已经在不同的设备上测试了应用程序,而且它有足够的空间。有人有解决方案吗?
汉克
答案 0 :(得分:5)
我的活动扩展了ActionBarActivity
正如the documentation所述,如果您使用操作栏的appcompat_v7
后端及其关联的ActionBarActivity
,则您的菜单资源需要showAsAction
自定义应用程序的命名空间:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/delete"
yourapp:showAsAction="ifRoom|withText"
android:icon="@drawable/ic_delete_image"
android:title="delete"/>
</menu>
Here is a complete sample project演示了appcompat_v7
操作栏的使用。
答案 1 :(得分:0)
尝试将其更改为
<item
android:id="@+id/delete"
android:showAsAction="always|withText"
android:icon="@drawable/ic_delete_image"
android:title="delete"/>
希望这会对你有所帮助。