2011-03-23 20 views
64

मुझे यकीन है कि कई एंड्रॉइड /res/layout फ़ोल्डर्स द्वारा निभाई गई भूमिका को अच्छी तरह से समझना नहीं है।एंड्रॉइड लेआउट फ़ोल्डर्स: लेआउट, लेआउट-पोर्ट, लेआउट-लैंड

layout: सामान्य लेआउट

layout-port: विजेट कि पोर्ट्रेट ओरिएंटेशन

layout-land के लिए परिवर्तन करना होगा के लिए लेआउट: विजेट कि Home नमूना आवेदन में लैंडस्केप ओरिएंटेशन

के लिए परिवर्तन करना होगा उदाहरण के लिए के लिए लेआउट, layout-port और layout-land फ़ोल्डरों के तहत केवल एक home.xml फ़ाइल है।

क्या मुझे सही समझा है?

+6

कुछ डेवलपर्स का एहसास नहीं हो सकता है के लिए में res layout-land या layout-port

layout-port: लेआउट फ़ोल्डर बनाएँ इस अवधारणा को मास्टर करना कितना महत्वपूर्ण है, इसलिए इसे SO पर डालने के लिए धन्यवाद। – whyoz

+0

मेरा सिद्धांत एचटीएमएल 5 भविष्य में इस सामान को प्रतिस्थापित करेगा। – neferpitou

उत्तर

106

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

आप वैकल्पिक संसाधन here प्रदान करने के बारे में पढ़ सकते हैं। जमीन और बंदरगाह की तुलना में कई और विकल्प हैं।

+1

इस मामले में, अन्य लेआउट ओरिएंटेशन के आधार पर नहीं बदलते हैं, इसलिए वे केवल लेआउट फ़ोल्डर में हैं, जबकि घर पोर्ट्रेट या लैंडस्केप के लिए विशिष्ट है – Cameron

+0

मुझे आश्चर्य है कि प्रत्येक संपत्ति के लिए कुछ प्रकार का अभिविन्यास विनिर्देशक नहीं है, प्रत्येक के लिए अलग-अलग मान इंगित करें। मैं समझता हूं कि संकल्पों के मामले में जो गन्दा हो सकता है, लेकिन चूंकि केवल दो संभावित उन्मुखताएं हैं (और हमेशा होगी), हो सकता है कि लेआउट के लिए दो अलग-अलग फ़ाइलों को बनाए रखना न पड़े, उदाहरण के लिए, केवल एक संपत्ति उन्मुखता के बीच अंतर करने की जरूरत है। – RTF

10

यदि आप layout-port फ़ोल्डर में home.xml शब्दों में कहें, जब आपके डिवाइस पोर्ट्रेट ओरिएंटेशन में है यह फ़ाइल का उपयोग करेगा: layout-port/home.xml

यदि आप layout-land फ़ोल्डर में home.xml डालते हैं, तो जब आपका डिवाइस लैंडस्केप ओरिएंटेशन में होता है तो यह फ़ाइल का उपयोग करेगा: layout-land/home.xml

चित्र और परिदृश्य जैसे विभिन्न अभिविन्यास मोड के लिए अर्थ ... हम दो home.xml फ़ाइलों का उपयोग करते हैं; layout-port में और दूसरा layout-land में। यदि दूसरी तरफ आप दोनों के लिए एक ही लेआउट फ़ाइल का उपयोग करना चाहते हैं, तो आप को layout फ़ोल्डर में डाल सकते हैं और layout-land और layout-port से इसे हटा सकते हैं।

+1

मैंने दोनों लेआउट और लेआउट-भूमि दोनों के लिए सीप्रेट लेआउट एक्सएमएल फाइलें बनाई हैं। लेकिन जब मैं परिदृश्य में अभिविन्यास बदलता हूं, तो इसकी लेआउट-लैंड फ़ाइल एंड्रॉइड द्वारा प्रदर्शित नहीं हो रही है। समस्या क्या है? – YuDroid

+7

यदि आपके पास -पोर्ट और -लैंड में दो लेआउट फ़ाइलें हैं और जब आप डिवाइस अभिविन्यास बदलते हैं तो वे स्विच नहीं करते हैं, तो संभवतः आपने AndroidManifest.xml में एंड्रॉइड: configChanges = "ओरिएंटेशन" निर्दिष्ट किया है। उस स्थिति में ऑन कॉन्फ़िगरेशन चेंज() में setContentView() को फिर से निर्दिष्ट करें या उस AndroidManifest.xml निर्देश को हटा दें। –

3

विजेट कि पोर्ट्रेट ओरिएंटेशन के लिए परिवर्तन करना होगा

layout-land: विजेट के लिए लेआउट कि लैंडस्केप ओरिएंटेशन के लिए परिवर्तन करना होगा

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