Как встроить один макет в другой в моем случае? - PullRequest
8 голосов
/ 08 июля 2011

Если у меня есть макет с именем bottom.xml ,

bottom.xml: (просто содержиттекстовое представление и редактирование текстового представления)

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:orientation="vertical"
     >
        <TextView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:gravity="center_horizontal" 
            android:text="@string/username"

        />

        <EditText 
            android:id="@+id/name"

            android:layout_width="120dip"
            android:layout_height="50dip"
            android:layout_gravity="center_horizontal"     
        />
 </LinearLayout>

Есть ли способ встроить вышеупомянутый bottom.xml взамен других макетов вместоповторять написание одного и того же кода в нескольких файлах макетов (когда другие макеты содержат часть, которая содержит тот же макет, что и bottom.xml)?

Например, если мой admin.xml макет также содержит часть макета, которая выглядит точно так же, как bottom.xml , как просто вставить bottom.xml внутри admin.xml вместо того, чтобы снова писать тот же код?

admin.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
     >
     ...
     ...
        <!--How to embed bottom.xml here-->
     ...
 </LinearLayout>

Если нет способа сделать это в Android, какой может быть обходной путь ??

---------- Обновление -----------

Как и предложил @xevincent, я могу использовать bottom.xml с помощью тега <include>,

Но как изменить идентификатор элементов внутри возобновленного макета?

Например, insdie bottom.xml , я хотел бы изменить идентификатор <editText android:id="@+id/name"> на <editText android:id="@+id/other_name"> при повторном использовании bottom.xml макет в другой макет, как изменить идентификатор?

Ответы [ 3 ]

7 голосов
/ 08 июля 2011
2 голосов
/ 14 марта 2016

Просто подтвердите ответ Ксевинсента. Я добавил этот ответ, потому что SO рекомендует «Всегда указывать наиболее релевантную часть важной ссылки, если целевой сайт недоступен или постоянно отключен».

Итак, в основном, его ссылка объясняет, что вы должны использовать <include />.

<com.android.launcher.Workspace
    android:id="@+id/workspace"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"

    launcher:defaultScreen="1">

    <include android:id="@+id/cell1" layout="@layout/workspace_screen" />
    <include android:id="@+id/cell2" layout="@layout/workspace_screen" />
    <include android:id="@+id/cell3" layout="@layout/workspace_screen" />

</com.android.launcher.Workspace>

И знайте, что вы можете переопределить параметры макета:

<include android:layout_width="fill_parent" layout="@layout/image_holder" />
0 голосов
/ 08 июля 2011
...