菜单项不会显示在ActionBar中,仅在溢出菜单中显示

时间:2014-05-02 11:33:52

标签: android android-actionbar overflow-menu

我遇到与这些主题完全相同的问题:

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,但项目总是结束在溢出菜单中。我已经在不同的设备上测试了应用程序,而且它有足够的空间。有人有解决方案吗?

汉克

2 个答案:

答案 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"/>

希望这会对你有所帮助。