Bunu kullanarak iki yol vardır ConstraintLayout
: Zincirler ve Kılavuzlar . Zincirleri kullanmak için ConstraintLayout
Beta 3 veya daha yenisini kullandığınızdan ve Android Studio'da görsel düzen düzenleyicisini kullanmak istiyorsanız Android Studio 2.3 Beta 1 veya daha yenisini kullandığınızdan emin olun.
Yöntem 1 - Zincir Kullanma
Düzen düzenleyiciyi açın ve widget'larınızı normal şekilde ekleyin, gerektiği şekilde üst sınırlamalar ekleyin. Bu durumda, üst öğenin altına ve üst öğenin yanına (Kaydet düğmesi için sol taraf ve Paylaş düğmesi için sağ taraf) kısıtlamalı iki düğme ekledim:
Bu durumda, yatay görünüme geçersem görünümlerin üst öğeyi doldurmadığını ancak köşelere tutturulduğunu unutmayın:
Ctrl / Cmd tıklatarak veya görünümlerin etrafına bir kutu sürükleyerek her iki görünümü de vurgulayın:
Ardından görünümlere sağ tıklayın ve "Yatay Olarak Ortala" yı seçin:
Bu görünümler arasında iki yönlü bir bağlantı kurar (bir Zincir bu şekilde tanımlanır). Varsayılan olarak, zincir stili "yayılmadır"; XML özniteliği eklenmediğinde bile uygulanır. Bu zincir stiline bağlı kalmak, ancak 0dp
görünümlerimizin mevcut alanı doldurmasını sağlamak için görünümlerimizin genişliğini ayarlamak ve ana öğeye eşit bir şekilde yaymak:
Bu, manzara görünümünde daha belirgindir:
Düzen düzenleyiciyi atlamayı tercih ederseniz, sonuçta ortaya çıkan XML şöyle görünür:
<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">
<Button
android:id="@+id/button_save"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/button_save_text"
android:layout_marginStart="8dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="4dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toLeftOf="@+id/button_share"
app:layout_constraintHorizontal_chainStyle="spread" />
<Button
android:id="@+id/button_share"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/button_share_text"
android:layout_marginStart="4dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
app:layout_constraintLeft_toRightOf="@+id/button_save"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
</android.support.constraint.ConstraintLayout>
Detaylar:
- her öğenin genişliğini görünümlerin üst öğeye doldurmasına
0dp
veya bu öğenin görüntülemesine MATCH_CONSTRAINT
izin vermesine (isteğe bağlı)
- görünümler çift yönlü olarak birbirine bağlanmalıdır (paylaşım düğmesine düğme bağlantılarını kaydetme hakkı, kaydet düğmesi için paylaş düğmesi bağlantılarının solu), "Yatay Olarak Ortala" seçildiğinde bu düzen düzenleyici aracılığıyla otomatik olarak gerçekleşir
- zincirdeki ilk görünüm, zincir stilini belirtebilir, çeşitli zincir stilleri
layout_constraintHorizontal_chainStyle
için belgelere bakın , zincir stili atlanırsa, varsayılan "yayılır"
- zincirin ağırlığı ayarlanabilir
layout_constraintHorizontal_weight
- bu örnek yatay bir zincir içindir, dikey zincirler için karşılık gelen özellikler vardır
Yöntem 2 - Kılavuz Kullanma
Düzeninizi düzenleyicide açın ve kılavuz düğmesini tıklayın:
Ardından "Dikey Kılavuz Ekle" yi seçin:
Varsayılan olarak, büyük olasılıkla sola göreli değerlerde (sola bakan okla gösterilir) sabitlenecek yeni bir kılavuz görünecektir:
Yüzde değerine geçmek için sola bakan oku tıklayın, ardından kılavuzu% 50 işaretine sürükleyin:
Kılavuz şimdi diğer görünümler için bir tutturucu olarak kullanılabilir. Örneğimde, kaydet düğmesinin sağını ve paylaş düğmesinin solunu kılavuza ekledim:
Görünümlerin kullanılabilir alanı doldurmasını istiyorsanız, kısıtlama "Herhangi Bir Boyut" olarak ayarlanmalıdır (dalgalı çizgiler yatay olarak çalışır):
(Bu ayarı ile aynıdır layout_width
To 0dp
).
XML'de düzen düzenleyiciyi kullanmak yerine bir kılavuz da kolayca oluşturulabilir:
<android.support.constraint.Guideline
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/guideline"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5" />