2012-05-11 17 views
7

मैं एक ऐप डिज़ाइन कर रहा हूं और मैं सोच रहा था कि लैंडस्केप मोड में एक अलग लेआउट कैसे बनाया जाए। मैंने "लेआउट-लैंड" नामक रेज़ में एक फ़ोल्डर बनाया और एक एक्सएमएल फाइल बनाई लेकिन जब मैं एमुलेटर चलाता हूं तो यह काम नहीं करता है। मैंने इसे "मुख्य" कहने का प्रयास किया लेकिन यह कहता है कि पहले से मौजूद है, जो यह करता है लेकिन "लेआउट" फ़ोल्डर में। अगर मैं इसे कुछ अलग कहता हूं तो क्या मुझे मैनिफेस्ट में कुछ बदलना होगा? सहायता के लिए धन्यवाद!एंड्रॉइड लैंडस्केप लेआउट

res\layout\main.xml 
res\layout-land\main.xml 

इन लेआउट में से प्रत्येक में एक ही तत्व होते हैं लेकिन चाहिए फिर से व्यवस्था की, उदाहरण के लिए:

+0

कोई भी नहीं जो आप कर रहे हैं, ठीक है फ़ोल्डर और एक्सएमएल फाइलों की वर्तनी को ठीक से जांचें। Http: //developer.android.com/guide/topics/resources/providing-resources.html#Compatibility – Akram

+0

बिल्कुल आपका प्रश्न नहीं मिला । लेकिन एंड्रॉइड स्वचालित रूप से अभिविन्यास परिवर्तन पर लेआउट को बदलता है जब तक कि आप अपनी गतिविधि में कॉन्फ़िगरेशन चेंज पर ओवरराइड नहीं कर रहे हैं। –

उत्तर

10

बस स्पष्ट करने के लिए, यदि आप लैंडस्केप या पोर्ट्रेट में हैं एंड्रॉइड लेआउट फ़ाइल को -land निर्देशिका में पहले देखता है, अगर यह नहीं मिला है तो यह डिफ़ॉल्ट layout निर्देशिका को चेक करता है। आपकी फ़ाइलें इस प्रकार है, और उपकरण के वर्तमान विन्यास पर रनटाइम पर निर्भर करता है प्रणाली द्वारा लोड किया जाएगा के रूप में नामित किया जाना चाहिए:

res/layout/main.xml 
res/layout-land/main.xml 

चेक अधिक जानकारी के लिए providing resources पर प्रलेखन।

+1

धन्यवाद, जैसा कि मैंने कहा था कि जब मैं लेआउट-भूमि फ़ोल्डर पर राइट क्लिक करता हूं और नई एंड्रॉइड एक्सएमएल फ़ाइल पर क्लिक करता हूं, तो मैं इसे "मुख्य" नाम नहीं दे सकता, यह कहता है कि पहले से मौजूद है लेकिन यह उस फ़ोल्डर में नहीं है –

+0

हाय rsay3, क्या एलेक्स वास्तव में आपकी समस्या का समाधान करता था? मैं TheNewBoston ट्यूटोरियल कर रहा हूँ और एक ही समस्या है। मेरे पास लेआउट और लेआउट-भूमि निर्देशिका दोनों हैं। लेआउट-जमीन खाली नहीं है, और यदि मैं ग्रहण में फ़ोल्डर को देखता हूं तो यह लेआउट-भूमि निर्देशिका में सही ढंग से मैप किया जाता है। मुझे अभी भी समस्या है। एक ग्रहण त्रुटि हो सकती है। मुझे फ़ाइल को लेआउट से लेआउट-भूमि, और रीफ्रेशिंग ग्रहण से कॉपी करके इसे हल करना था। – Kurt

+0

@ कर्ट। आपको वास्तव में क्या त्रुटि संदेश मिल रहा है? –

1

आप इस प्रकार का फ़ोल्डर संरचना चाहते हैं यदि आपके पास पोर्ट्रेट परिदृश्य में android:id="@+id/button1" वाला कोई बटन है तो आपको लैंडस्केप मोड में समान नाम देना होगा।

1

सबसे पहले आप अपने प्रकट

android:configChanges="orientation" 

तो फिर तुम इस समारोह को ओवरराइड और उपयोग कर सकते हैं setContentView को जोड़कर confguration हुए परिवर्तनों पर ध्यान करना चाहिए

public void onConfigurationChanged(Configuration newConfig) 
+0

इस फ़ंक्शन में क्या जांचें? – PankajAndroid

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