2012-02-03 20 views
7

जिस ऐप पर मैं काम कर रहा हूं उसके लिए एक गतिशील लेआउट की आवश्यकता है जो प्रोफ़ाइल के क्षैतिज स्क्रॉलव्यू प्रदर्शित करता है। एक प्रोफ़ाइल बस एक तस्वीर और कुछ पाठ के साथ एक सापेक्ष Layout है। चूंकि मुझे डेटा फ़ाइल से डेटा मिलता है, इसलिए मुझे प्रत्येक प्रोफ़ाइल के लिए एक सापेक्ष लेआउट बनाना होगा। सबसे पहले मैंने प्रत्येक रिलेवेटलाइट को प्रोग्राम के लिए लूप में बनाया और फिर इसे मूल दृश्य में जोड़ा। यह काम करता है, लेकिन मैं इसे इस तरह से नहीं करना चाहता हूं। मैं डिवाइस के स्क्रीन आकार के आधार पर विभिन्न लेआउट फाइलों का उपयोग करना चाहता हूं।एंड्रॉइड: क्या एक दृश्य की एक प्रति बनाना संभव है?

तब मैंने सोचा। खैर, क्या होगा यदि मेरे पास सिर्फ एक प्रोफ़ाइल वाला लेआउट था? मेरा कोड उस प्रोफाइल को findViewById() के साथ प्राप्त कर सकता है और फिर इसके आधार पर नए बनाएगा! दूसरे शब्दों में:

// get the layout 
    profileLayout = (LinearLayout) findViewById(R.id.profileLayout);   

    // get the first profile in the layout 
    originalProfile = (RelativeLayout) findViewById(R.id.profile1); 

    // make copy of profile 
    temporaryProfile = originalProfile; 

    // make changes to the this profile and add it back 
    profileLayout.addView(temporaryProfile); 
बेशक

, यह काम नहीं करता क्योंकि यह जावा और temporaryProfile अब originalProfile लिए एक संदर्भ है। तो क्या इस सापेक्ष लयआउट की प्रतिलिपि बनाने का कोई तरीका है? मुझे लेआउट इन्फ्लेटर के बारे में पता है, लेकिन मुझे अभी भी समझ में नहीं आता कि यह कैसे काम करता है। Object.clone() भी है।

उत्तर

8

इतना नहीं। आपके विशेष मामले की तरह लगता है कि किसी प्रकार की सूची दृश्य और एडाप्टर से लाभ हो सकता है (जानकारी के लिए this जैसे संसाधन देखें)। यदि नहीं, तो एक लेआउट इन्फ्लेटर सबसे अच्छा उत्तर है जैसा कि आप चाहते हैं कि ठीक वही है। एक प्राप्त करने के बाद आप इसे अपने एक्सएमएल लेआउट फाइलों में परिभाषित किए गए किसी भी दृश्य को "फुलाएं" के लिए उपयोग कर सकते हैं और जो कुछ भी आप चाहते हैं उसे कर सकते हैं।

Here's inflater की एक महान चर्चा।

+0

धन्यवाद! –

2

आप अपने inflator की एक प्रति एक नए संदर्भ के साथ बना सकते हैं। Layout Inflater - Android Developers

+0

प्रतिक्रिया के लिए धन्यवाद! प्रतिक्रिया के लिए –

0

क्यों आप चाहते हैं कि लेआउट के लिए xml फ़ाइल में शामिल न करें।

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