Ada dua cara untuk mencapai ini dengan menggunakan ConstraintLayout
: Rantai dan Pedoman . Untuk menggunakan Chains, pastikan Anda menggunakanConstraintLayout
Beta 3 atau lebih baru dan jika Anda ingin menggunakan editor tata letak visual di Android Studio, pastikan Anda menggunakan Android Studio 2.3 Beta 1 atau lebih baru.
Metode 1 - Menggunakan Rantai
Buka editor tata letak dan tambahkan widget Anda seperti biasa, tambahkan batasan induk sesuai kebutuhan. Dalam hal ini, saya telah menambahkan dua tombol dengan batasan di bagian bawah induk dan sisi induk (sisi kiri untuk tombol Simpan dan sisi kanan untuk tombol Bagikan):
Perhatikan bahwa dalam kondisi ini, jika saya beralih ke tampilan lansekap, tampilan tidak mengisi induk tetapi berlabuh ke sudut:
Sorot kedua tampilan, baik dengan mengklik Ctrl / Cmd atau dengan menyeret kotak di sekitar tampilan:
Kemudian klik kanan pada view dan pilih "Center Horizontally":
Ini mengatur koneksi dua arah antara tampilan (yang merupakan cara Chain didefinisikan). Secara default gaya rantai adalah "menyebar", yang diterapkan bahkan ketika tidak ada atribut XML yang disertakan. Tetap menggunakan gaya berantai ini tetapi mengatur lebar tampilan kami untuk 0dp
memungkinkan tampilan memenuhi ruang yang tersedia, menyebar merata di seluruh induk:
Ini lebih terlihat dalam tampilan lanskap:
Jika Anda memilih untuk melewatkan editor tata letak, XML yang dihasilkan akan terlihat seperti:
<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>
Detail:
- mengatur lebar setiap item ke
0dp
atau MATCH_CONSTRAINT
memungkinkan tampilan mengisi induk (opsional)
- pandangan harus ditautkan bersama dua arah (sebelah kanan tombol simpan tautan ke tombol berbagi, sebelah kiri tautan tombol berbagi ke tombol simpan), ini akan terjadi secara otomatis melalui editor tata letak ketika memilih "Pusat Secara Horizontal"
- pandangan pertama dalam rantai dapat menentukan gaya rantai melalui
layout_constraintHorizontal_chainStyle
, lihat dokumentasi untuk berbagai gaya rantai, jika gaya rantai dihilangkan, defaultnya adalah "menyebar"
- bobot rantai dapat disesuaikan melalui
layout_constraintHorizontal_weight
- contoh ini untuk rantai horizontal, ada atribut yang sesuai untuk rantai vertikal
Metode 2 - Menggunakan Pedoman
Buka tata letak Anda di editor dan klik tombol pedoman:
Kemudian pilih "Tambahkan Pedoman Vertikal":
Sebuah pedoman baru akan muncul, bahwa secara default, kemungkinan akan berlabuh ke kiri dalam nilai relatif (dilambangkan dengan panah yang menghadap ke kiri):
Klik panah yang menghadap kiri untuk mengubahnya ke nilai persentase, lalu seret pedoman ke tanda 50%:
Pedoman sekarang dapat digunakan sebagai jangkar untuk pandangan lain. Dalam contoh saya, saya melampirkan kanan tombol simpan dan kiri tombol bagikan ke panduan:
Jika Anda ingin tampilan memenuhi ruang yang tersedia maka batasannya harus diatur ke "Ukuran Apa Pun" (garis berlekuk-lekuk yang berjalan horizontal):
(Ini sama dengan mengatur layout_width
untuk0dp
).
Panduan juga dapat dibuat dalam XML dengan mudah daripada menggunakan editor tata letak:
<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" />
Untuk membuat 2 tampilan di baris yang sama, lebar yang sama, hanya perlu didefinisikan
Catatan
MATCH_CONSTRAINT
)button1
danbutton2
harus seperti di atasHasil
LEBIH BANYAK
Jika Anda ingin
View1
lebih besar dariView2
yang dapat Anda gunakanweight
ataupercent
.Contoh,
View1
lebar = 2 *View2
lebar menggunakan bobotHasil
Contoh,
View1
lebar = 2 *View2
lebar menggunakan persenHasil
sumber
Baik jika itu membantu seseorang
yang kunci di sini
app:layout_constraintHorizontal_weight="1"
danhal terbaik tentang tata letak kendala adalah bahwa ia mendukung ketergantungan melingkar dan di sini ini adalah apa yang saya lakukan menggunakan hal itu.
Untuk anak pertama
app:layout_constraintEnd_toStartOf="@+id/textInputSecondChild"
Untuk anak kedua
app:layout_constraintLeft_toRightOf="@+id/textInputFirstChild"
ini demo lengkapnya
sumber
Anda harus membaca tentang rantai tertimbang. Contoh kode ada di sini.
Jadi, tetapkan
android:layout_width="0dp"
,app:layout_constraintHorizontal_weight="1"
dan tautkan setiap tampilan dengan tetangga seperti:sumber
ConstraintLayout
, dan hanya jawaban pertama tidak cukup untuk mendapatkan gambar di atas.Setelah Anda memiliki item yang dirantai, Anda masih dapat menggunakan bobot pada mereka seperti tata letak relatif untuk menjaga mereka tetap berjarak. Contoh di bawah ini menunjukkan cara menjaga jarak mereka secara merata dengan ukuran teks yang berbeda.
sumber