【问题标题】:The menu item isn't showing in the ActionBar, only in overflow menu菜单项未显示在 ActionBar 中,仅显示在溢出菜单中
【发布时间】:2014-05-02 11:33:51
【问题描述】:

我在这些线程中遇到了完全相同的问题:

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 和总是,但项目总是结束在溢出菜单中。我已经在不同的设备上测试了这个应用程序,它有足够的空间。有没有人可以解决这个问题?

汉克

【问题讨论】:

  • 您是否正在使用支持库?
  • 不,但我正在 GenyMotion 中运行应用程序。
  • android:showAsAction="always" 不适合你吗?
  • 不,它不起作用...
  • always 或在 ifRoom 的特定菜单项之前有多少项?

标签: android android-actionbar overflow-menu


【解决方案1】:

我的活动扩展了 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 操作栏的使用。

【讨论】:

  • 谢谢!真的很有帮助!
【解决方案2】:

试试改成

<item
        android:id="@+id/delete"
        android:showAsAction="always|withText"
        android:icon="@drawable/ic_delete_image"
        android:title="delete"/>

希望这会对你有所帮助。

【讨论】:

  • always 本身也应该可以工作。一定有不同的原因。
  • 谢谢,但没有帮助:/
猜你喜欢
  • 1970-01-01
  • 2012-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多