我在布局文件中使用
[databinding] {"msg":"\u003cinclude id\u003d\u0027@+id/displayArea\u0027\u003e conflicts with an ID used by a view in this layout","file":"badlayout/res/layout-land/main.xml","pos":[{"line0":10,"col0":2,"line1":20,"col1":16}]}
[databinding] {"msg":"\u003cinclude id\u003d\u0027@+id/displayArea\u0027\u003e conflicts with an ID used by a view in this layout","file":"badlayout/res/layout-port/main.xml","pos":[{"line0":10,"col0":2,"line1":10,"col1":67}]}
当我在layout-port/main.xml中的
元素中设置
android:id
<include android:id="@+id/displayArea" layout="@layout/display" />
直接在layout-land/main.xml中使用相同的ID:
<LinearLayout android:id="@+id/displayArea"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
...
</LinearLayout>
实验表明我无法混合搭配这些。我可以在
标签中或在普通视图中指定
android:id
谁能准确解释一下这条消息的含义以及规则是什么?
这一切都很复杂,因为您也无法在布局文件的顶层设置
android:id
而不遇到不同的问题。
这是一个较旧的应用程序。这些布局文件在 Eclipse 中从来没有给我带来任何麻烦;我在迁移到 Android Studio 后才开始收到错误。
为了完整起见,完整的 xml 文件如下所示:
布局土地/main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout android:id="@+id/displayArea"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:baselineAligned="false">
<TextView
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
</LinearLayout>
</LinearLayout>
布局端口/main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<include android:id="@+id/displayArea" layout="@layout/display" />
</LinearLayout>
布局/display.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
<TextView android:id="@+id/StatusLine"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>