6

我正在尝试制作自定义选项菜单。使用此代码后,我得到:Element item is not allowed here

代码:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent">
    <item android:id="@+id/morsoid_settings"
          android:icon="@drawable/ic_new_game"
          android:title="@string/new_game" />
    <item android:id="@+id/morsoid_close"
          android:icon="@drawable/ic_help"
          android:title="@string/help" />
</menu>

灵感来源:Android 开发指南

4

4 回答 4

13

我不知道这是否有区别,但是您是否将菜单放在 res/menu 中而不是 res/layout 中?

于 2011-08-08T11:28:45.240 回答
3

尝试省略布局属性。这是文档中的示例:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/new_game"
          android:icon="@drawable/ic_new_game"
          android:title="@string/new_game" />
    <item android:id="@+id/help"
          android:icon="@drawable/ic_help"
          android:title="@string/help" />
</menu>

编辑- 还要确保您使用的MenuInflater是指南建议的:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.game_menu, menu);
    return true;
}

当它实际上是一个菜单资源时,使用 aLayoutInflater将导致被解释为一个视图元素。<menu>

于 2011-03-24T21:26:08.230 回答
0

不是 100% 确定您在谈论编译错误,或者在布局文件中显示在开发系统中的错误。

使用Idea IntelliJ (10.5)我在将上面显示的示例代码粘贴到 menu.xml 文件时遇到了该错误。

然而,在构建项目后,它就消失了。我仍然看到您在编辑 menu.xml 文件时看到的 layout_width / height 错误,但它不会影响构建或运行时行为。

于 2011-05-22T07:56:47.523 回答
0

这是一个老问题,但自从我在 2019 年经历过这个问题后,我想我会把我的解决方案放在这里:

<item>一个<menu>. 原来我的问题是在我的 src/main/res/layout 文件夹中,而不是在我的 src/main/res/menu 文件夹中。

于 2019-09-05T23:05:39.567 回答