Son zamanlarda uygulamaya çalışıyorum Constraint Layout
ama aynı buldum Barrier
ve Guideline
çalışıyorum. Her ikisi de bölücü gibi çalışır. Aralarında bir fark var mı?
Yanıtlar:
TextView
Dinamik yüksekliklere sahip iki widget'ınız olduğunu Button
ve en yüksek olanın hemen altına bir tane yerleştirmek istediğinizi varsayalım TextView
:
SADECE düzende doğrudan bu gerçekleştirmenin yolu yatay kullanmaktır Barrier
. Bu Barrier
, bu iki TextView
s'nin yüksekliğine göre bir sınırlama belirlemenize izin verir . Sonra üstünü yatayın Button
alt kısmı ile sınırlarsın 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
İçeriği ne olursa olsun, yukarıda belirtilen yükseklikleri ekran yüksekliğinin% 30'u ile sınırlamak istediğinizi varsayalım .
Bunu uygulamak için Guideline
, yüzde konumu ile yatay eklemeli ve TextView
altını bununla sınırlamalısınız 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>
Aralarındaki tek fark Barrier
ve Guideline
olmasıdır Barrier
pozisyonunu esnek ve her zaman içinde ihtiva edilen ve birden fazla kullanıcı arayüzü öğeleri büyüklüğüne göre olan Guideline
pozisyonu her zaman sabittir. '
app:layout_constraintBottom_toTopOf="@id/guideline"
Bariyer ile ilgili resmi belgeler :
Bir Bariyer, girdi olarak birden çok parçacığa başvurur ve belirtilen taraftaki en uç parçacığa dayalı sanal bir kılavuz oluşturur. Örneğin, bir sol bariyer, başvurulan tüm görünümlerin soluna hizalanacaktır.
Barrier ile ilgili eğitim belgeleri :
Kılavuza benzer şekilde, bariyer, görünümleri sınırlayabileceğiniz görünmez bir çizgidir. Bir bariyerin kendi konumunu tanımlamaması dışında; bunun yerine, bariyer konumu, içinde bulunan görünümlerin konumuna göre hareket eder. Bu, bir görünümü belirli bir görünüm yerine bir dizi görünümle sınırlamak istediğinizde kullanışlıdır.