多次包含相同的布局

use*_*885 11 android android-layout

我有一个共同的布局(common.xml),我希望在另一个布局(layout_a.xml)中包含很多次.但它只给我看了一次.为什么?

common.xml

<merge xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="@android:drawable/alert_light_frame">

        <ImageView

            android:layout_width="match_parent"
            android:layout_height="150dp"
            android:id="@+id/imageView"

            android:src="@drawable/test"

            android:scaleType="centerCrop" />

        <TextView

            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:layout_below="@+id/imageView"
            android:id="@+id/textView"
            android:text="test"
            android:layout_marginTop="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginLeft="10dp" />
    </RelativeLayout>
</merge>
Run Code Online (Sandbox Code Playgroud)

layout_a.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <include layout="@layout/common" />

    <include layout="@layout/common" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

bts*_*tse 11

在XML中定义的ID必须是唯一的.您包含两个具有包含相同ID的视图的布局.

以下是修复它的方法.

ps除非您的第一个布局文件中没有包含更多代码,否则该合并标记将毫无用处.


Ash*_*hta 6

正如btse所说,XML中的ID必须是唯一的。可以通过以下方式实现:

<include android:id="@+id/common1"
    layout="@layout/common" />

<include android:id="@+id/common2"
    layout="@layout/common" />
Run Code Online (Sandbox Code Playgroud)

有关如何访问包含的两个视图中的元素的信息,您可以查看博客文章。