Как включить макет внутри макета? - PullRequest
77 голосов
/ 12 апреля 2011

Как включить макет внутри макета в Android?

Я создаю общий макет.Я хочу включить этот макет на другой странице.

Ответы [ 5 ]

156 голосов
/ 12 апреля 2011

Редактировать: Как и в комментарии, справедливо запросил здесь еще немного информации. Используйте тег include

<include
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   layout="@layout/yourlayout" />

чтобы включить макет, который вы хотите использовать повторно.

Проверьте эту ссылку out ...

45 голосов
/ 09 апреля 2014

Обратите внимание, что если вы включите android:id... в тег <include />, он переопределит любой идентификатор, который был определен во включенном макете. Например:

<include
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:id="@+id/some_id_if_needed"
   layout="@layout/yourlayout" />

yourlayout.xml:

<LinearLayout
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:id="@+id/some_other_id">
   <Button
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:id="@+id/button1" />
 </LinearLayout>

Тогда вы бы ссылались на этот включенный макет в коде следующим образом:

View includedLayout = findViewById(R.id.some_id_if_needed);
Button insideTheIncludedLayout = (Button)includedLayout.findViewById(R.id.button1);
18 голосов
/ 12 апреля 2011

Использовать <include /> тег.

          <include 
            android:id="@+id/some_id_if_needed"
            layout="@layout/some_layout"/>

Кроме того, прочитайте Создание повторно используемых компонентов пользовательского интерфейса и Объединение макетов статей.

6 голосов
/ 21 августа 2014

Попробуйте это

<include
            android:id="@+id/OnlineOffline"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            layout="@layout/YourLayoutName" />
2 голосов
/ 05 июня 2017

Из официальных документов о Повторное использование макетов

Хотя Android предлагает множество виджетов, чтобы обеспечить небольшие и повторно используемые интерактивные элементы, вам также может понадобиться повторно использовать более крупные компоненты, которые требуют специальной компоновки. Эффективно повторно использовать полные макеты, вы можете использовать тег для вставки другого макет внутри текущего макета.

Вот мой header.xml файл, который я могу использовать повторно, используя include tag

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFFFF"
    >


    <TextView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:gravity="center"
        android:text="@string/app_name"
        android:textColor="#000000" />

</RelativeLayout>

Нет. Я использую тег в XML, чтобы добавить другой макет из другого файла XML.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#f0f0f0" >


    <include
        android:id="@+id/header_VIEW"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        layout="@layout/header" />

        <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:background="#ffffff"
        android:orientation="vertical"
        android:padding="5dp" >


    </LinearLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...