android बाधा लेआउट में बैरियर और दिशानिर्देश के बीच क्या अंतर है?




android-constraintlayout (2)

हाल ही में Constraint Layout को लागू करने की कोशिश कर रहा है, लेकिन मैंने पाया कि Barrier और Guideline समान हैं। दोनों डिवाइडर की तरह काम करते हैं। क्या उनके बीच कोई अंतर है?


जब बरनरों का उपयोग करना है

मान लें कि आपके पास डायनेमिक हाइट्स के साथ दो TextView विजेट हैं और आप सबसे ऊंचे TextView ठीक नीचे एक Button रखना चाहते हैं:

लेआउट में सीधे लागू करने का एकमात्र तरीका एक क्षैतिज Barrier का उपयोग करना है। यह Barrier आपको उन दो TextView s की ऊंचाई के आधार पर एक बाधा निर्दिष्ट करने की अनुमति देता है। फिर आप अपने Button के शीर्ष को क्षैतिज Barrier के निचले हिस्से में Barrier

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/left_text_view"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        android:textSize="16sp"
        android:background="#AAA"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/right_text_view"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/right_text_view"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginEnd="8dp"
        android:text="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
        android:textSize="16sp"
        android:background="#DDD"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/left_text_view"
        app:layout_constraintTop_toTopOf="parent" />

    <android.support.constraint.Barrier
        android:id="@+id/barrier"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:barrierDirection="bottom"
        app:constraint_referenced_ids="left_text_view,right_text_view" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:text="Button"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/barrier" />

</android.support.constraint.ConstraintLayout>

जब गाइड का उपयोग करने के लिए

मान लें कि आप उपर्युक्त TextView ऊँचाई को स्क्रीन की ऊँचाई के 30% तक सीमित करना चाहते हैं, चाहे उनके पास कोई भी सामग्री क्यों न हो।

कार्यान्वित करने के लिए आपको क्षैतिज Guideline को प्रतिशत स्थिति के साथ जोड़ना चाहिए और उस Guideline नीचे TextView नीचे विवश करना चाहिए।

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/left_text_view"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:background="#AAA"
        android:text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        android:textSize="16sp"
        app:layout_constraintBottom_toTopOf="@+id/guideline"
        app:layout_constraintEnd_toStartOf="@+id/right_text_view"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/right_text_view"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginBottom="8dp"
        android:background="#DDD"
        android:text="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
        android:textSize="16sp"
        app:layout_constraintBottom_toTopOf="@+id/guideline"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/left_text_view"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:text="Button"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/guideline" />

    <android.support.constraint.Guideline
        android:id="@+id/guideline"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.3" />

</android.support.constraint.ConstraintLayout>

निष्कर्ष

Barrier और Guideline बीच एकमात्र अंतर यह है कि Barrier की स्थिति लचीली होती है और यह हमेशा इसके भीतर निहित कई यूआई तत्वों के आकार पर आधारित होती है और Guideline की स्थिति हमेशा तय होती है।


बैरियर पर आधिकारिक दस्तावेज :

एक बैरियर इनपुट के रूप में कई विजेट्स को संदर्भित करता है, और निर्दिष्ट पक्ष पर सबसे चरम विजेट के आधार पर एक आभासी दिशानिर्देश बनाता है। उदाहरण के लिए, एक बाईं बाधा सभी संदर्भित विचारों के बाईं ओर संरेखित होगी।

बैरियर पर प्रशिक्षण डॉक्स :

एक दिशानिर्देश के समान, एक बाधा एक अदृश्य रेखा है जिसे आप विचारों को विवश कर सकते हैं। एक बाधा को छोड़कर अपनी स्थिति को परिभाषित नहीं करता है; इसके बजाय, बाधा स्थिति उसके भीतर निहित विचारों की स्थिति के आधार पर चलती है। यह तब उपयोगी होता है जब आप किसी विशिष्ट दृश्य के बजाय किसी दृश्य को देखने के लिए बाध्य करना चाहते हैं।





android-constraintlayout