2012-10-08 20 views
12

क्या हमारे पास पोर्ट्रेट अभिविन्यास के लिए परिदृश्य और विभिन्न XML के लिए एक अलग xml हो सकता है?लैंडस्केप और पोर्ट्रेट अभिविन्यास एंड्रॉइड के लिए अलग-अलग डिज़ाइन

मैं एक सरल अनुप्रयोग पर काम कर रहा हूँ, कुछ बटन और textviews है, एक्सएमएल चित्र में अच्छा लग रहा है, लेकिन इसके साथ ही एक्सएमएल के साथ जब मैं लैंडस्केप ओरिएंटेशन जाँच, डिजाइन अच्छा नहीं लगता है।

कोई सुझाव की सराहना की कर रहे हैं .. धन्यवाद।

उत्तर

34

हाँ बिल्कुल।

आप एक्सएमएल फ़ाइलें के दो संस्करण बना सकते हैं और रेस फ़ोल्डर के अंदर लेआउट बंदरगाह और लेआउट भूमि फ़ोल्डर में डाल करने के लिए होगा।

जैसे:

res/layout [Portrait Mode; default] 
main.xml 
res/layout-land [Landscape Mode] 
main.xml 

आप एक ही पर आगे और अधिक उल्लेख कर सकते हैं http://developer.android.com/training/basics/supporting-devices/screens.html

+0

क्षमा करें मदद कर सकते हैं! बहुत बहुत धन्यवाद! महान काम करता है! :) – Aadi

5

आप परिदृश्य के लिए एक और लेआउट तो

res -> layout-land फ़ोल्डर में रख बनाना चाहते हैं पर।

दोनों एक्सएमएल के नाम एक ही है जिसके लिए पोर्ट्रेट और लैंडस्केप के लिए प्रयोग किया जाता है होना चाहिए रहे हैं।

+0

देर से उत्तर के लिए खेद है! आपका बहुत बहुत धन्यवाद ! :) – Aadi

1

आप लैंडस्केप ओरिएंटेशन के लिए एक अलग xml फ़ाइल बनाना चाहिए। लिंक नीचे आप देर से उत्तर के लिए

http://developer.android.com/training/basics/supporting-devices/screens.html

+0

देर से उत्तर के लिए खेद है! उत्तर के लिए बहुत बहुत धन्यवाद :) – Aadi

1
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_screen_orientation_app); 
    if(getResources().getDisplayMetrics().widthPixels>getResources().getDisplayMetrics(). 
      heightPixels) 
     { 
      Toast.makeText(this,"Screen switched to Landscape mode",Toast.LENGTH_SHORT).show(); 
     } 
     else 
     { 
      Toast.makeText(this,"Screen switched to Portrait mode",Toast.LENGTH_SHORT).show(); 
     } 
    } 
+1

कोड स्निपेट को उत्तर के रूप में जोड़ने के बजाय कुछ स्पष्टीकरण जोड़ने का प्रयास करें – user2720864

+0

क्या यह कोड ऑनस्टार्ट() में नहीं होना चाहिए? मुझे नहीं लगता कि डिवाइस चालू करते समय क्रिएट() को बुलाया जाता है। –

+0

अल लेलोपैथ, जब डिवाइस घुमाया जाता है, तो गतिविधि पूरी तरह से हटा दी जाती है। OnDestroy कहा जाता है, तो गतिविधि पुनरारंभ किया जाता है। तो हाँ, ऑनक्रेट को फिर से बुलाया जाता है – jb15613

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