<include> के साथ लेआउट का फिर से इस्तेमाल करें

Compose का इस्तेमाल करके मैसेज लिखना
Android के लिए, Jetpack Compose हमारा सुझाया गया यूज़र इंटरफ़ेस (यूआई) टूलकिट है. Compose में लेआउट इस्तेमाल करने का तरीका जानें.

Android, छोटे, फिर से इस्तेमाल किए जा सकने वाले, इंटरैक्टिव एलिमेंट देने के लिए कई तरह के विजेट उपलब्ध कराता है. हालांकि, आपको बड़े कॉम्पोनेंट का फिर से इस्तेमाल भी करना पड़ सकता है. इन कॉम्पोनेंट के लिए, किसी खास लेआउट की ज़रूरत होती है. पूरे लेआउट का फिर से बेहतर तरीके से इस्तेमाल करने के लिए, एक लेआउट को दूसरे में एम्बेड करने के लिए <include> और <merge> टैग का इस्तेमाल करें.

इसकी मदद से, मुश्किल लेआउट बनाए जा सकते हैं. जैसे, 'हां' या 'नहीं' बटन वाला पैनल या अपनी पसंद के मुताबिक प्रोग्रेस बार में जानकारी वाला टेक्स्ट. इसका मतलब है कि आप अपने ऐप्लिकेशन के ऐसे किसी भी एलिमेंट को एक्सट्रैक्ट कर सकते हैं जो एक से ज़्यादा लेआउट में एक जैसा है. साथ ही, उन्हें अलग-अलग मैनेज करके हर लेआउट में शामिल कर सकते हैं. हालांकि, एक कस्टम View लिखकर अलग-अलग यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट बनाए जा सकते हैं, लेकिन लेआउट फ़ाइल का फिर से इस्तेमाल करके इसे ज़्यादा आसानी से बनाया जा सकता है.

फिर से इस्तेमाल किया जा सकने वाला लेआउट बनाना

एक नई एक्सएमएल फ़ाइल बनाकर और वह लेआउट तय करके शुरू करें जिसे आपको फिर से इस्तेमाल करना है. उदाहरण के लिए, यहां एक लेआउट दिया गया है, जिसमें हर गतिविधि (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 ठीक वैसा ही होना चाहिए जैसा आपको हर उस लेआउट में दिखाना है जहां आपको यह लेआउट जोड़ना है.

<include> टैग का इस्तेमाल करना

जिस लेआउट में फिर से इस्तेमाल किया जा सकने वाला कॉम्पोनेंट जोड़ना है उसमें <include> टैग जोड़ें. उदाहरण के लिए, यहां एक लेआउट दिया गया है, जिसमें पिछले उदाहरण का टाइटल बार शामिल है:

<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>

शामिल किए गए लेआउट के रूट व्यू के सभी लेआउट पैरामीटर को भी बदला जा सकता है. इसके लिए, <include> टैग में उन पैरामीटर की जानकारी दें.android:layout_* यह नीचे दिए गए उदाहरण में दिखाया गया है:

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

हालांकि, अगर आपको <include> टैग का इस्तेमाल करके लेआउट एट्रिब्यूट को बदलना है, तो android:layout_height और android:layout_width को भी बदलें, ताकि अन्य लेआउट एट्रिब्यूट लागू हो सकें.

<merge> टैग का इस्तेमाल करना

जब एक लेआउट को दूसरे में शामिल किया जाता है, तब <merge> टैग आपके व्यू हैरारकी में मौजूद गैर-ज़रूरी व्यू ग्रुप को हटाने में मदद करता है. <merge> का एक इस्तेमाल उदाहरण यह है कि आप ViewGroup को बढ़ाकर कस्टम व्यू को लागू करें.

उदाहरण के लिए, अगर आपका मुख्य लेआउट एक वर्टिकल LinearLayout है जिसमें एक से ज़्यादा लेआउट में दो व्यू को फिर से इस्तेमाल किया जा सकता है, तो फिर से इस्तेमाल किए जा सकने वाले लेआउट में दो व्यू सेट करने के लिए, इसके लिए रूट व्यू की ज़रूरत होगी. हालांकि, फिर से इस्तेमाल किए जा सकने वाले लेआउट के लिए, किसी दूसरे LinearLayout को रूट के तौर पर इस्तेमाल करने पर, वर्टिकल LinearLayout के अंदर वर्टिकल LinearLayout बन जाता है. नेस्ट किया गया LinearLayout कोई असल मकसद नहीं है और आपके यूज़र इंटरफ़ेस (यूआई) की परफ़ॉर्मेंस को धीमा कर देता है.

इसके बजाय, कस्टम व्यू बनाने के लिए LinearLayout को बढ़ाया जा सकता है और चाइल्ड व्यू की जानकारी देने के लिए, लेआउट एक्सएमएल का इस्तेमाल किया जा सकता है. एक्सएमएल में सबसे ऊपर मौजूद टैग, LinearLayout के बजाय <merge> है, जैसा कि इस उदाहरण में दिखाया गया है:

<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>

<include> टैग का इस्तेमाल करके, इस लेआउट को किसी दूसरे लेआउट में शामिल करने पर, सिस्टम <merge> एलिमेंट को अनदेखा कर देता है. साथ ही, <include> टैग के बजाय, दो बटन को सीधे लेआउट में डाल देता है.

<include> के बारे में ज़्यादा जानकारी के लिए, लेआउट संसाधन देखें.