Android: लैंडस्केप मोड के लिए वैकल्पिक लेआउट xml


126

मेरे पास परिदृश्य के लिए एक लेआउट और पोर्ट्रेट के लिए एक कैसे हो सकता है? जब उपयोगकर्ता बग़ल में फोन घुमाता है तो मैं अतिरिक्त चौड़ाई लेना चाहता हूं और ऊर्ध्वाधर स्थान का संरक्षण करना चाहता हूं।

जवाबों:


217

डिफ़ॉल्ट रूप से, लेआउट में /res/layoutपोर्ट्रेट और लैंडस्केप दोनों को लागू किया जाता है।

यदि आपके पास उदाहरण के लिए है

/res/layout/main.xml

आप एक नया फ़ोल्डर जोड़ सकते हैं /res/layout-land, main.xmlउसमें कॉपी कर सकते हैं और आवश्यक समायोजन कर सकते हैं।

उन्मुखीकरण

कुछ और विकल्पों के लिए http://www.androidpeople.com/android-portrait-amp-landscape-differeent-layouts और http://www.devx.com/wireless/Article/40792/1954 भी देखें ।


1
क्या मुझे नाम लेआउट-भूमि या किसी अन्य शब्द @marapet
Vamsi Pavan Mahesh

9
आप किसी भी अन्य शब्द का उपयोग नहीं कर सकते हैं
Foo

मेरा बैकग्राउंड इमेज लैंडस्केप पर फैला हुआ है। मेरे पास लेआउट-लैंड और ड्रॉएबल-लैंड है। इसके अलावा यह बाहर फैला है..मैंने एक ही इमेज, 9-पैच इमेज, mdpi, hdpi n all..still इश्यू का उपयोग करने की कोशिश की है :(
प्रहर

शब्द के लिए क्या हैportrait
dsdsdsdsd

एंड्रॉइड स्टूडियो के अनुसार @dsdsdsd यह लेआउट-पोर्ट है
ग्रेगनेगेयर

76

एंड्रॉइड स्टूडियो के मौजूदा संस्करण (v1.0.2) में आप नीचे दिए गए स्क्रीनशॉट में दिखाए गए दृश्य संपादक में बटन पर क्लिक करके बस एक लैंडस्केप लेआउट जोड़ सकते हैं। "लैंडस्केप विविधता बनाएँ" चुनें

एंड्रॉइड स्टूडियो लैंडस्केप लेआउट को जोड़ता है


सिवाय यह आपके layout-landफ़ोल्डर में एक नई प्रति डालता है । किसी भी विचार कैसे वहाँ से एक लेआउट कॉल करने के लिए? उपयोग नहीं कर सकते R.layout.layout_name। मैं अपने स्वयं के लेआउट को मैन्युअल रूप से कॉन्फ़िगरेशन परिवर्तन पर कॉन्फ़िगर करने का प्रयास कर रहा हूं, धन्यवाद।
अज़र्सपॉट

2
@NoniA। यह पता लगाना चाहिए कि फोन कब लैंडस्केप पर स्विच करता है और किसी को लेआउट-लैंड से स्वचालित रूप से कॉल करता है।
१२:०५ को डिस्टवो

43

जब तक आप अन्यथा निर्दिष्ट नहीं करते, लेआउट / रेस / लेआउट चित्र और परिदृश्य दोनों पर लागू होते हैं। मान लें कि हमारे पास हमारे होमपेज के लिए /res/layout/home.xml है और हम चाहते हैं कि यह 2 लेआउट प्रकारों में अलग तरह से दिखे।

  1. फ़ोल्डर / रेस / लेआउट-लैंड बनाएं (यहां आप अपने लैंडस्केप को समायोजित लेआउट रखेंगे)
  2. वहां home.xml कॉपी करें
  3. इसमें आवश्यक बदलाव करें

स्रोत


'पोर्ट्रेट' के बारे में क्या?
dsdsdsdsd

नए <sw> क्वालिफायर के बारे में क्या?
रुचिर बैरनिया

6

Android Studio 3.xx और Android Studio 4.xx के लिए सबसे तेज़ तरीका

1. गतिविधि लेआउट के डिज़ाइन टैब पर जाएं

2. पूर्वावलोकन बटन के लिए ओरिएंटेशन पर आपको जो शीर्ष दबाया जाना चाहिए , उसके लिए एक लैंडस्केप लेआउट (चेक इमेज) बनाने का विकल्प है, उस विशेष अभिविन्यास के लिए एक नया फ़ोल्डर आपके xml लेआउट फ़ाइल के रूप में बनाया जाएगा।

यहाँ छवि विवरण दर्ज करें


2

आप निम्न फ़ोल्डर संरचना के तहत अपने विशिष्ट लेआउट को निम्नानुसार समूहित कर सकते हैं।

लेआउट-भूमि target_version

अर्थात

लेआउट-लैंड -19 // लक्ष्य किटकैट

इसी तरह आप अपने लेआउट बना सकते हैं।

आशा है कि यह आपकी मदद करेगा


उत्तर देने के लिए धन्यवाद, लेकिन मैं यह नहीं देखता कि आपका उत्तर कैसे मदद करता है क्योंकि यह प्रश्न पहले से ही उत्तर दिया गया था। शायद आप -19प्रत्यय के लाभ की व्याख्या कर सकते हैं ? क्या यह किसी भी तरह से मददगार है?
ब्रायन फील्ड

0

मैं शीघ्र ही इसे समझाने का प्रयास करूंगा।

सबसे पहले, आप देख सकते हैं कि अब आप का उपयोग करना चाहिए ConstraintLayout Google द्वारा अनुरोध (androix पुस्तकालय देखें)।

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

इसका मतलब है कि आपको निर्देशिका क्वालीफायर का उपयोग दोनों मामलों में करना होगा:

  • Android डिवाइस का समर्थन
  • Android लैंडस्केप या पोर्ट्रेट मोड

परिणामस्वरूप, यहाँ एक छूट है:

res/layout/main_activity.xml                # For handsets
res/layout-land/main_activity.xml           # For handsets in landscape
res/layout-sw600dp/main_activity.xml        # For 7” tablets
res/layout-sw600dp-land/main_activity.xml   # For 7” tablets in landscape

तुम भी resens स्रोतों के साथ क्वालिफायर का उपयोग कर सकते हैं dimens.xml का उपयोग कर फ़ाइलें।

res/values/dimens.xml                # For handsets
res/values-land/dimens.xml           # For handsets in landscape
res/values-sw600dp/dimens.xml        # For 7” tablets

res / values ​​/ dimens.xml

<resources>
    <dimen name="grid_view_item_height">70dp</dimen>
</resources>

res / values-भूमि / dimens.xml

<resources>
    <dimen name="grid_view_item_height">150dp</dimen>
</resources>

your_item_grid_or_list_layout.xml

<androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/constraintlayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content

    <ImageView
            android:id="@+id/image"
            android:layout_width="0dp"
            android:layout_height="@dimen/grid_view_item_height"
            android:layout_marginEnd="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="8dp"
            android:background="@drawable/border"
            android:src="@drawable/ic_menu_slideshow">

</androidx.constraintlayout.widget.ConstraintLayout>

स्रोत: https://developer.android.com/training/multiscreen/screensizes

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.