2010-12-01 13 views
15

मुझे गलतफहमी हो सकती है कि <include> और <merge> काम, लेकिन Simple example of <merge> and <include> usage in Android XML-layouts के अनुसार, <include> का अर्थ है "उस फ़ाइल को ले जाएं और इसकी सामग्री यहां पेस्ट करें"।एंड्रॉइड समर्थन लेआउट विरासत (Django टेम्पलेट्स के समान) करता है?

मान लें कि आप 3 गतिविधियां चाहते हैं जिनके पास एक ही शीर्षलेख है, लेकिन अलग-अलग सामग्री है। आपको अभी भी प्रत्येक गतिविधि के लिए 3 एक्सएमएल लेआउट फाइलों की आवश्यकता होगी। प्रत्येक लेआउट के बीच एकमात्र अंतर यह होगा कि वे <include> टैग में एक अलग लेआउट को परिभाषित करते हैं। अगर मैं एक पाद लेख जोड़ना चाहता था तो मुझे प्रत्येक लेआउट को बदलना होगा।

मैं उलटा हासिल करने का एक तरीका ढूंढ रहा हूं, इसलिए बच्चों के लेआउट माता-पिता के विशिष्ट ब्लॉक (similar to Django templates) को ओवरराइड करेंगे। इस तरह, अगर मैं उस पाद लेख को जोड़ना चाहता था, तो मैं सिर्फ माता-पिता को बदल दूंगा और बच्चे केवल सामग्री को ओवरराइड करना जारी रखेंगे।

+3

अच्छी तरह से, आप लेआउट inflater, कुछ टेम्पलेट्स और अपनी खुद की टेम्पलेट कक्षा का उपयोग कर प्रोग्रामेटिक रूप से कर सकते हैं। – janoliver

+0

'स्टाइल विरासत' सीधे आगे है। एक नई 'स्टाइल' के 'पैरेंट' विशेषता के विरुद्ध पिछले 'शैली' का संदर्भ लें –

उत्तर

11

मान लें कि आप 3 गतिविधियां चाहते हैं जिनके पास एक ही शीर्षलेख है, लेकिन अलग-अलग सामग्री है। आपको अभी भी प्रत्येक गतिविधि के लिए 3 एक्सएमएल लेआउट फाइलों की आवश्यकता होगी। प्रत्येक लेआउट के बीच एकमात्र अंतर यह होगा कि वे टैग में एक अलग लेआउट परिभाषित करते हैं।

यदि आप तीन गतिविधियां चाहते हैं जिनके पास एक ही शीर्षलेख है, तो आपके पास प्रति गतिविधि एक लेआउट फ़ाइल होगी। उस फ़ाइल में उस गतिविधि के लिए अद्वितीय विजेट होंगे, और सामान्य शीर्षलेख के लिए <include> तत्व होगा।

इस तरह, अगर मैं उस पाद लेख को जोड़ना चाहता हूं, तो मैं केवल माता-पिता को बदल दूंगा और बच्चे केवल सामग्री को ओवरराइड करना जारी रखेंगे।

यह इस समय एंड्रॉइड द्वारा समर्थित नहीं है। जैसा कि जैनोलिवर इंगित करता है, आप इसके लिए अपना स्वयं का समाधान रोल कर सकते हैं।

2

मैंने माता-पिता के लेआउट एक्सएमएल में व्यूस्ट्यूब प्रविष्टियों को जोड़कर हल किया है, और - उप-वर्ग के प्रकार के आधार पर - सही स्टब को भरना।

http://developer.android.com/reference/android/view/ViewStub.html

ViewStub तरह आलसी लोड हो रहा है एक दृश्य है, इसलिए यदि आप फोन बढ़ कभी नहीं() उस पर या कभी नहीं दिखाई दे रहा यह लेआउट पदानुक्रम को नहीं जोड़ा जाएगा बनाते हैं।

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