हाल ही में लागू करने की कोशिश कर Constraint Layout
रहा हूं, लेकिन मैंने पाया Barrier
और Guideline
वही काम करता है। दोनों डिवाइडर की तरह काम करते हैं। क्या उनके बीच कोई अंतर है?
हाल ही में लागू करने की कोशिश कर Constraint Layout
रहा हूं, लेकिन मैंने पाया Barrier
और Guideline
वही काम करता है। दोनों डिवाइडर की तरह काम करते हैं। क्या उनके बीच कोई अंतर है?
जवाबों:
मान लें कि आपके पास TextView
डायनामिक हाइट्स के साथ दो विजेट हैं और आप Button
सबसे ऊंचे से नीचे रखना चाहते हैं TextView
:
लेआउट में सीधे लागू करने का एकमात्र तरीका एक क्षैतिज उपयोग करना है Barrier
। यह Barrier
आपको उन दो TextView
एस की ऊंचाई के आधार पर एक बाधा निर्दिष्ट करने की अनुमति देता है । फिर आप Button
क्षैतिज के निचले हिस्से में अपने शीर्ष को कसते हैं 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
प्रतिशत स्थिति के साथ क्षैतिज जोड़ना चाहिए और उस TextView
तल को विवश करना चाहिए Guideline
।
<?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
's स्थिति लचीला और हमेशा कई UI तत्व के आकार पर आधारित होने से उसमें मौजूद और है Guideline
स्थिति हमेशा तय हो गई है'।
app:layout_constraintBottom_toTopOf="@id/guideline"
एक बैरियर इनपुट के रूप में कई विजेट्स को संदर्भित करता है, और निर्दिष्ट पक्ष पर सबसे चरम विजेट के आधार पर एक आभासी दिशानिर्देश बनाता है। उदाहरण के लिए, एक बाईं बाधा सभी संदर्भित विचारों के बाईं ओर संरेखित होगी।
एक दिशानिर्देश के समान, एक बाधा एक अदृश्य रेखा है जिसे आप विचारों को विवश कर सकते हैं। एक बाधा को छोड़कर अपनी स्थिति को परिभाषित नहीं करता है; इसके बजाय, बाधा की स्थिति उसके भीतर निहित विचारों की स्थिति के आधार पर चलती है। यह तब उपयोगी होता है जब आप किसी विशिष्ट दृश्य के बजाय किसी दृश्य को देखने के लिए बाध्य करना चाहते हैं।