Menggunakan kembali tata letak dengan <include>

Meskipun Android menawarkan berbagai widget untuk menyediakan elemen interaktif yang kecil dan dapat digunakan kembali, Anda mungkin juga perlu menggunakan kembali komponen lebih besar yang memerlukan tata letak khusus. Untuk menggunakan kembali tata letak lengkap secara efisien, Anda dapat menggunakan tag <include> dan <merge> untuk menyematkan tata letak lain ke dalam tata letak saat ini.

Menggunakan kembali tata letak sangat efektif karena memungkinkan Anda membuat tata letak yang kompleks dan dapat digunakan kembali. Misalnya, panel tombol ya/tidak, atau status progres kustom dengan teks deskripsi. Artinya, setiap elemen aplikasi Anda yang umum di beberapa tata letak dapat diekstrak, dikelola secara terpisah, lalu disertakan di setiap tata letak. Jadi, meskipun setiap komponen UI bisa dibuat dengan menulis View kustom, Anda dapat lebih mudah melakukannya dengan menggunakan kembali file tata letak.

Membuat tata letak yang dapat digunakan kembali

Jika sudah mengetahui tata letak yang ingin Anda gunakan kembali, buat file XML baru dan tentukan tata letaknya. Misalnya, berikut adalah tata letak yang mendefinisikan baris judul untuk disertakan dalam setiap aktivitas (titlebar.xml):

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/titlebar_bg"
    tools:showIn="@layout/activity_main" >

    <ImageView android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:src="@drawable/gafricalogo" />
</FrameLayout>

View root harus persis dengan yang ingin ditampilkan di setiap tata letak tempat Anda menambahkan tata letak ini.

Catatan: Atribut tools:showIn dalam XML di atas adalah atribut khusus yang dihapus selama kompilasi dan hanya digunakan pada waktu desain di Android Studio—atribut ini menentukan tata letak yang mencakup file ini, sehingga Anda dapat mempratinjau (dan mengedit) file ini saat muncul ketika disematkan dalam tata letak induk.

Menggunakan tag <include>

Di dalam tata letak yang ingin Anda tambahi komponen yang dapat digunakan ulang, tambahkan tag <include>. Misalnya, berikut adalah tata letak yang menyertakan baris judul dari atas:

Berikut adalah file tata letaknya:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/app_bg"
    android:gravity="center_horizontal">

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

    <TextView android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:text="@string/hello"
              android:padding="10dp" />

    ...

</LinearLayout>

Anda juga dapat mengganti semua parameter tata letak (atribut android:layout_* apa pun) dari tampilan root tata letak yang disertakan dengan menentukannya di tag <include>. Contoh:

<include android:id="@+id/news_title"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         layout="@layout/title"/>

Namun, jika ingin mengganti atribut tata letak menggunakan tag <include>, Anda harus mengganti android:layout_height dan android:layout_width agar atribut tata letak lain dapat diterapkan.

Menggunakan tag <merge>

Tag <merge> membantu menghilangkan kelompok tampilan yang berlebihan di hierarki tampilan saat menyertakan satu tata letak dalam tampilan lain. Misalnya, jika tata letak utama Anda adalah LinearLayout vertikal dengan dua tampilan berurutan dapat digunakan kembali dalam beberapa tata letak, tata letak yang dapat digunakan ulang saat Anda menempatkan dua tampilan akan memerlukan tampilan root-nya sendiri. Namun, menggunakan LinearLayout lain sebagai root untuk tata letak yang dapat digunakan kembali akan menghasilkan LinearLayout vertikal di dalam LinearLayout vertikal. LinearLayout bertingkat tidak terlalu berguna dan hanya akan memperlambat performa UI Anda.

Agar tidak menyertakan kelompok tampilan berlebih, Anda dapat menggunakan elemen <merge> sebagai tampilan root untuk tata letak yang dapat digunakan kembali. Contoh:

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

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/add"/>

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/delete"/>

</merge>

Sekarang, jika Anda menyertakan tata letak ini di tata letak lain (menggunakan tag <include>), sistem akan mengabaikan elemen <merge> dan menempatkan dua tombol langsung di tata letak, menggantikan tag <include>.

Untuk informasi selengkapnya terkait topik ini, lihat Resource tata letak.