2010-04-28 8 views
71

मैं एंड्रॉइड एक्सएमएल-लेआउट में <merge> और <include> टैग के बारे में उत्सुक हूं। मैंने दो ट्यूटोरियल पढ़े हैं, लेकिन अभी तक एक साधारण उदाहरण उपयोग नहीं मिला है।एंड्रॉइड एक्सएमएल-लेआउट में <merge> और <include> उपयोग का सरल उदाहरण

कोई खुशहाल हो सकता है अगर कोई ऐसा उदाहरण प्रदान कर सकता है या एक पॉइंटर दे सकता है।

+2

कृपया बंद पर एक नज़र डालें आईसीअल एंड्रॉइड प्रलेखन: [ के साथ लेआउट का पुन: उपयोग करना] (http://developer.android.com/training/improving-layouts/reusing-layouts.html) – JJD

+0

http://stackoverflow.com/a/11093340/596555, आपकी मदद कर सकता है – boiledwater

+0

एफवाईआई, यदि आप ** मेनू ** के साथ इसका उपयोग करना चाहते हैं, तो आप भाग्य से बाहर हैं, लेकिन आप यहां वर्णित कई एक्सएमएल फाइलों को बढ़ा सकते हैं: http: // stackoverflow।कॉम/प्रश्न/4337034/शामिल-मेनू-इन-मेन्यू-एंड्रॉइड –

उत्तर

93

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

इसलिए विलय-चीज़ को इसके फ़ाइल-नाम से संदर्भित किया गया है ... मर्ज-फ़ाइल में कोई आईडी-विशेषता नहीं है? – aioobe

+19

@aioobe दाएं। ' 'मूल रूप से' उस फ़ाइल को ले जाएं और इसकी सामग्री यहां पेस्ट करें '। – yanchenko

+0

हाय, असल में मुझे यहां एक गंभीर समस्या का सामना करना पड़ रहा है। मैं प्राथमिकताओं का उपयोग कर रहा हूं और वरीयताओं के अंदर उपयोग करने के लिए लेआउट निर्दिष्ट कर रहा हूं। लेआउट के अंदर मैं शामिल-विलय कार्यक्षमता का उपयोग कर रहा हूं (ताकि मेरे पास एक प्लेसहोल्डर हो जो संस्करण के आधार पर स्विच या चेकबॉक्स का उपयोग करेगा)। जब मैं दृश्य (यानी चेकबॉक्स/स्विच) ढूंढने की कोशिश कर रहा हूं, तो समस्या मेरी वरीयताओं पर पोस्टपोस्टेट विधि में है, मैं हमेशा दृश्य को शून्य के रूप में प्राप्त कर रहा हूं! क्या आप यहां मदद कर सकते हैं? http://stackoverflow.com/questions/15708599/findviewbyid-returns-null-for-preference-layout – Adithya

2

आईडी कोड अन्यथा रिश्तेदार लेआउट मापदंडों पेस्ट नहीं करता काम किया होता। यह कुछ अलग प्रसंस्करण

5

एक साधारण एंड्रॉइड एक्सएमएल लेआउट < शामिल है/> हाउटो जो http://www.coboltforge.com/2012/05/tech-stuff-layout/ पर एक आम गड़बड़ी समझा रहा है। यही कारण है कि मदद मिल सकती है ...

4

एक उदाहरण लें:

मैं दो टैग <EditText> और <ListView > आ रहा एक से अधिक UI के लिए है। इसलिए मैंने ऐसे सभी यूआई में शामिल करने के लिए नीचे दी गई एक XML फ़ाइल बनाई है।

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

उपर्युक्त एक्सएमएल वैध एक्सएमएल नहीं है क्योंकि इसमें मूल तत्व नहीं है। इसलिए एक्सएमएल के लिए सिर्फ रूट तत्व की आवश्यकता है।

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

<merge> टैग प्रतिपादन लेआउट के प्रदर्शन को बढ़ाने के लिए स्तरों की संख्या कम करने के लिए प्रयोग किया जाता है: <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

+0

आईडी के बारे में क्या? –

संबंधित मुद्दे