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

हालांकि, 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>

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

<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 का इस्तेमाल किया जा सकता है के बारे में बात करते हैं. एक्सएमएल में सबसे लोकप्रिय टैग, इसके बजाय <merge> है LinearLayout, जैसा कि इस उदाहरण में दिखाया गया है:

<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> के बारे में ज़्यादा जानकारी के लिए, इसे देखें लेआउट के बारे में जानकारी देने वाला संसाधन.