【问题标题】:Menu items not shown in menu bar菜单栏中未显示的菜单项
【发布时间】:2015-10-27 13:44:20
【问题描述】:

我遇到了与like herehere 多次发布相同的问题。我定义了一个菜单项,它显示在AndroidStudio 的预览中:

但是当我在手机上运行应用程序时,图标(png 图像)不可见,并且有很多可用空间。但是,此“添加”选项显示在“选项”菜单中(最右侧;与“Srttings”一起)。这是我的menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">

    <item android:id="@+id/action_favourite"
        android:icon="@mipmap/ic_add"
        android:title="@string/menu_add"
        android:showAsAction="always"/>


    <item android:id="@+id/action_settings" android:title="@string/action_settings"
        android:orderInCategory="100" app:showAsAction="never" />

</menu>

我尝试了我能找到的建议,但没有一个能解决我的问题。我的手机是LG G3。我该如何解决这个问题?

补充资料:onCreateOptionsMenu

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

【问题讨论】:

  • 可以分享你的onCreateOptionsMenu()onPrepareOptionsMenu() 代码吗?
  • 请查看更新的问题;我没有办法onPrepareOptionsMenu()...
  • 您是否尝试将您的onCreateOptionsMenu 移动到onPrepareOptionsMenu?文档说 onPrepareOptionsMenu 在菜单显示之前被调用,每次显示。我敢打赌,在onCreateOptionsMenu 上膨胀菜单,系统还没有计算出菜单的大小,所有的菜单选项都显示在溢出中。
  • 我不太确定您的建议。我用onPrepareOptionsMenu 替换了方法名称onCreateOptionsMenu,这并没有解决我的问题,而且情况变得更糟。我不确定您所说的将一种方法“移动”到另一种方法是什么意思...?

标签: android xml android-studio


【解决方案1】:

只需使用app:showAsAction="always"xmlns:app="http://schemas.android.com/apk/res-auto" 即可显示。

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">

    <item android:id="@+id/action_favourite"
        android:icon="@mipmap/ic_add"
        android:title="@string/menu_add"
        app:showAsAction="always"/>


    <item android:id="@+id/action_settings"
        android:title="@string/action_settings"
        android:orderInCategory="100"
        app:showAsAction="never" />

</menu>

您可能正在使用依赖于应用命名空间的支持库。如果有疑问,只需添加两次相同的属性(android:app: 命名空间)。

【讨论】:

  • 我刚刚尝试了您的建议,但仍然在菜单栏中没有看到名称Add。与以前完全相同的行为...
  • 如果您使用提供的代码,工具栏中应该有图标,溢出菜单中应该有设置选项。你到底看到了什么?
  • 就像在菜单栏中发布的图像一样,只是在菜单栏中没有“加号”图标。它在左侧显示“Testapp”,我看到右侧的三个点。当我点击这三个点时,我会看到“添加”菜单(和“设置菜单”)。
  • 我刚刚使用完整源代码更新了示例,它在我的 GT-I9100 上按预期工作。请确保重新编译您的项目,因为可能无法检测到较小的 xml 更改。
  • 是的,终于!!伙计,android 真的是一个痛苦的...一个非常微小的步骤需要你几个小时!不过还是谢谢..
【解决方案2】:

onCreate() 中添加setHasOptionsMenu(true)

而且你可能膨胀了错误的菜单文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多