रिलेटिव लेआउट

Compose को आज़माएं
Jetpack Compose, Android के लिए यूज़र इंटरफ़ेस (यूआई) का सुझाया गया टूलकिट है. Compose में लेआउट के साथ काम करने का तरीका जानें.

RelativeLayout एक व्यू ग्रुप है. यह चाइल्ड व्यू को उनकी रिलेटिव पोज़िशन में दिखाता है. हर व्यू की पोज़िशन को, सिबलिंग एलिमेंट (जैसे, किसी दूसरे व्यू के बाईं ओर या नीचे) के मुकाबले या पैरंट RelativeLayout के मुकाबले (जैसे, सबसे नीचे, बाईं ओर या बीच में अलाइन) के मुकाबले तय किया जा सकता है.

ध्यान दें: बेहतर परफ़ॉर्मेंस और टूलिंग की सुविधा पाने के लिए, आपको ConstraintLayout की मदद से अपना लेआउट बनाना चाहिए.

RelativeLayout, यूज़र इंटरफ़ेस (यूआई) को डिज़ाइन करने के लिए एक बहुत ही काम का टूल है. इसकी मदद से, नेस्ट किए गए व्यू ग्रुप को हटाया जा सकता है और अपने लेआउट के क्रम को फ़्लैट रखा जा सकता है. इससे परफ़ॉर्मेंस बेहतर होती है. अगर आपको कई नेस्ट किए गए LinearLayout ग्रुप इस्तेमाल करने पड़ते हैं, तो उन्हें एक RelativeLayout से बदला जा सकता है.

व्यू की पोज़िशनिंग

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

RelativeLayout में व्यू के लिए उपलब्ध कई लेआउट प्रॉपर्टी में से कुछ यहां दी गई हैं:

android:layout_alignParentTop
अगर इसकी वैल्यू "true" है, तो इस व्यू का सबसे ऊपर वाला किनारा, पैरंट के सबसे ऊपर वाले किनारे से मैच करता है.
android:layout_centerVertical
अगर इसकी वैल्यू "true" है, तो यह चाइल्ड, पैरंट के बीच में वर्टिकल तौर पर दिखता है.
android:layout_below
यह व्यू, रिसॉर्स आईडी के साथ तय किए गए व्यू के नीचे दिखता है.
android:layout_toRightOf
यह व्यू, रिसॉर्स आईडी के साथ तय किए गए व्यू के दाईं ओर दिखता है.

ये सिर्फ़ कुछ उदाहरण हैं. सभी लेआउट एट्रिब्यूट के बारे में जानकारी, RelativeLayout.LayoutParams पर उपलब्ध है.

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

एक्सएमएल लेआउट में, लेआउट में मौजूद अन्य व्यू के मुकाबले डिपेंडेंसी को किसी भी क्रम में तय किया जा सकता है. उदाहरण के लिए, यह तय किया जा सकता है कि "view1", "view2" के नीचे दिखे. भले ही, "view2" क्रम में सबसे आखिर में तय किया गया व्यू हो. नीचे दिए गए उदाहरण में, इस तरह का परिदृश्य दिखाया गया है.

उदाहरण

हर व्यू की रिलेटिव पोज़िशन को कंट्रोल करने वाले हर एट्रिब्यूट को हाइलाइट किया गया है.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="16dp"
    android:paddingRight="16dp" >
    <EditText
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/reminder" />
    <Spinner
        android:id="@+id/dates"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/name"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@+id/times" />
    <Spinner
        android:id="@id/times"
        android:layout_width="96dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/name"
        android:layout_alignParentRight="true" />
    <Button
        android:layout_width="96dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/times"
        android:layout_alignParentRight="true"
        android:text="@string/done" />
</RelativeLayout>

हर चाइल्ड व्यू के लिए उपलब्ध सभी लेआउट एट्रिब्यूट के बारे में जानने के लिए, RelativeLayout देखें RelativeLayout.LayoutParams.