我正在尝试制作自定义选项菜单。使用此代码后,我得到:此处不允许使用元素项
代码:
<?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 dev guide
答案 0 :(得分:10)
我不知道它是否有所作为,但您是否将菜单放在res / menu中而不是res / layout中?
答案 1 :(得分: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;
}
使用LayoutInflater
会导致<menu>
被解释为视图元素,而它实际上是一个菜单资源。
答案 2 :(得分:0)
不是100%确定您在讨论编译错误,或者在布局文件中显示系统中显示的错误。
使用Idea IntelliJ (10.5)
我将上面显示的示例代码粘贴到menu.xml文件中时出错。
然而,在建立项目后,它消失了。我仍然看到编辑menu.xml文件时看到的layout_width / height错误,但它不会影响构建或运行时行为。
答案 3 :(得分:0)
这是一个古老的问题,但是我认为自从我在2019年经历过这个问题之后,我就将解决方案放在这里:
我在Android Studio中收到一条警告,说将<item>
放在<menu>
内时“此处不允许元素项目”。事实证明,我的问题是在src / main / res / layout文件夹中,而不是在src / main / res / menu文件夹中。