Простой пример использования <merge> и <include> в XML-макетах Android

Мне интересны теги <merge> и <include> в XML-макетах Android. Я прочитал два учебника, но пока не нашел простой пример использования.

Был бы рад, если бы кто-нибудь мог предоставить такой пример или указать указатель на один.

Ответ 1

some_activity.xml

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

    // some views

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

   // probably more views

</LinearLayout>

view_part.xml

<merge xmlns:android="http://schemas.android.com/apk/res/android">

    // the views to be merged

</merge>

Ответ 3

Возьмем пример:

У меня есть два тега <EditText> и <ListView >, которые соответствуют нескольким пользовательским интерфейсам. Поэтому я создал XML файл, как указано ниже, для включения во все такие пользовательские интерфейсы.

<?xml ...>
<EditText ... />
<ListView ... />   

Вышеприведенный XML недействителен XML, поскольку он не имеет корневого элемента. Поэтому корневой элемент нужен только для XML. <merge> - это решение, приведенное ниже:

<?xml ...>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
    <EditText ... />
    <ListView ... />
</merge>

Ответ 4

id не вставляет код, иначе работа с относительными параметрами макета. Он выполняет некоторую другую обработку

Ответ 5

Тег

<merge> используется для уменьшения количества уровней для повышения производительности макетов рендеринга. тег используется вместе с тегом <include>.

Возьмем пример, у нас есть макет входа и используется для более чем одного приложения нашего приложения. При использовании тега для отображения login_layout мы можем использовать и можем избежать уровня.

Я также советую вам прочитать трюки о макетах. http://android-developers.blogspot.com.tr/2009/03/android-layout-tricks-3-optimize-by.html

login_form.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- Login form -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >
    <EditText
        android:id="@+id/email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Email..."
        android:inputType="textEmailAddress"
        android:maxLines="1"
        android:singleLine="true"
        android:visibility="visible" />

    <EditText
        android:id="@+id/password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Password.."
        android:imeActionId="@+id/login"
        android:imeOptions="actionUnspecified"
        android:inputType="textPassword"
        android:maxLines="1"
        android:singleLine="true"
        android:text="1337"
        android:visibility="visible" />

    <Button
        android:id="@+id/sign_in_button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="16sp"
        android:paddingLeft="32sp"
        android:paddingRight="32sp"
        android:text="Login"
        android:visibility="visible" />

</LinearLayout>

example_layout.xml (любой макет, который мы хотим включить login_form.xml)

<merge xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" >

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

</merge>

Мы можем видеть иерархию уровней enter image description here