Dengan Preview 1 dari Android Studio 2.2 Google merilis layout baru di perpustakaan dukungannya: ConstraintLayout
. Dengan ConstraintLayout lebih mudah menggunakan alat Desain di Android Studio, tapi saya tidak menemukan cara untuk menggunakan ukuran relatif (persen atau 'bobot' seperti di LinearLayout). Apakah ada cara untuk mendefinisikan kendala berdasarkan persen? Misalnya, membuat Tampilan mengambil 40% layar, membuat margin 20% di antara tampilan, mengatur lebar Tampilan hingga 50% dari lebar Tampilan lainnya?
android
android-support-library
android-constraintlayout
Yury Fedorov
sumber
sumber
version 1.1
ConstraintLayout. Lihat "Dimensi persen" di developer.android.com/reference/android/support/constraint/… atau beberapa jawaban yang lebih baru.Jawaban:
Saat ini Anda dapat melakukan ini dalam beberapa cara.
Salah satunya adalah membuat pedoman (klik kanan area desain, lalu klik tambahkan pedoman vertikal / horizontal). Anda kemudian dapat mengklik "header" pedoman untuk mengubah posisi menjadi berbasis persentase. Akhirnya, Anda dapat membatasi pandangan ke pedoman.
Cara lain adalah memposisikan tampilan menggunakan bias (persentase) dan untuk kemudian jangkar tampilan lain ke tampilan itu.
Karena itu, kami telah memikirkan cara menawarkan dimensi berdasarkan persentase. Saya tidak bisa membuat janji apa pun, tetapi itu adalah sesuatu yang ingin kami tambahkan.
sumber
app:layout_constraintGuide_percentage
Mungkin bermanfaat untuk memiliki referensi cepat di sini.
Penempatan tampilan
Gunakan panduan dengan
app:layout_constraintGuide_percent
seperti ini:Dan kemudian Anda bisa menggunakan pedoman ini sebagai titik jangkar untuk tampilan lain.
atau
Gunakan bias dengan
app:layout_constraintHorizontal_bias
dan / atauapp:layout_constraintVertical_bias
untuk mengubah lokasi tampilan ketika ruang yang tersedia memungkinkanUkuran tampilan
Nilai berdasarkan persen lainnya adalah tinggi dan / atau lebar elemen, dengan
app:layout_constraintHeight_percent
dan / atauapp:layout_constraintWidth_percent
:sumber
0dp
digunakan dalam ConstraintLayout untuk menunjukkan ukuran yang dinamis. Lihat developer.android.com/reference/android/support/constraint/…1dp
, bukan0dp
.. itu yang saya bicarakan0dp
sudah disediakan, sehingga1dp
tampaknya masuk akal.Pada "ConstraintLayout1.1.0-beta1" Anda dapat menggunakan persen untuk menentukan lebar & tinggi.
Ini akan menentukan lebar menjadi 40% dari lebar layar. Kombinasi dari ini dan pedoman dalam persen memungkinkan Anda untuk membuat tata letak berbasis persen yang Anda inginkan.
sumber
version 1.1
ConstraintLayout. Tambahan_default="percent"
tidak diperlukan lagi pada versi stabil! Lihat "Dimensi persen" di developer.android.com/reference/android/support/constraint/…sp
satuan, bagaimana mungkin ukuran teks menjadi proporsional otomatis dengan ukuran tampilan (yang, dengan sendirinya, ditentukan secara proporsional dengan ukuran total tata letak, yaitu dalam 'persen') ?Dengan rilis baru ConstraintLayout v1.1 Anda sekarang dapat melakukan hal berikut:
Ini akan membatasi tombol menjadi 20% tinggi dan 65% dari lebar tampilan induk.
sumber
sp
satuan, bagaimana mungkin ukuran teks menjadi proporsional otomatis dengan ukuran tampilan (yang, dengan sendirinya, ditentukan secara proporsional dengan ukuran total tata letak, yaitu dalam 'persen') ?Cara menggunakan Pedoman
Jawaban yang diterima sedikit tidak jelas tentang cara menggunakan pedoman dan apa "header" itu.
Langkah
Pertama-tama tambahkan Pedoman.
Pilih Guidline atau pindahkan sedikit untuk membuat kendala terlihat.
Kemudian klik lingkaran bundar ("header") hingga menjadi persentase. Anda kemudian dapat menyeret persentase ini ke 50% atau apa pun yang Anda inginkan.
Setelah itu, Anda dapat membatasi tampilan ke Pedoman untuk menjadikannya persentase dari orang tua (gunakan
match_constraint
pada tampilan).sumber
Pedoman ini sangat berharga - dan aplikasi: layout_constraintGuide_percent adalah teman yang hebat ... Namun terkadang kita menginginkan persentase tanpa pedoman. Sekarang mungkin menggunakan bobot :
Berikut ini adalah contoh yang lebih lengkap yang menggunakan pedoman dengan bobot tambahan :
sumber
Dengan v1.1.2 ConstraintLayout, dimensi harus di set ke
0dp
dan kemudian mengaturlayout_constraintWidth_percent
ataulayout_constraintHeight_percent
atribut ke nilai antara 0 dan 1 seperti:(Anda tidak perlu mengatur
app:layout_constraintWidth_default="percent"
atauapp:layout_constraintHeight_default="percent"
menggunakan ConstraintLayout 1.1.2 dan versi-versi berikut)sumber
Constraint Layout 1.0 membuat tampilan mengambil persentase layar yang diperlukan membuat dua panduan. Di Constraint Layout 1.1, ini dibuat lebih sederhana dengan memungkinkan Anda untuk membatasi tampilan dengan persentase lebar atau tinggi dengan mudah.
Bukankah ini fantastis? Semua tampilan mendukung atribut layout_constraintWidth_percent dan layout_constraintHeight_percent. Ini akan menyebabkan kendala diperbaiki pada persentase ruang yang tersedia. Jadi membuat Tombol atau memperluas TextView untuk mengisi persen layar dapat dilakukan dengan beberapa baris XML.
Misalnya, jika Anda ingin mengatur lebar tombol ke 70% layar, Anda bisa melakukannya seperti ini:
Harap dicatat bahwa Anda harus meletakkan dimensi yang harus digunakan sebagai persentase ke 0dp seperti yang telah kami tentukan android: layout_width ke 0dp di atas.
Demikian pula, jika Anda ingin mengatur ketinggian tombol ke 20% layar, Anda dapat melakukannya seperti ini:
Lihat! kami telah menentukan android: layout_height hingga 0dp saat ini karena kami ingin tombol menggunakan tinggi sebagai persentase.
sumber
Coba kode ini. Anda dapat mengubah persentase tinggi dan lebar dengan aplikasi: layout_constraintHeight_percent dan aplikasi: layout_constraintWidth_percent.
Gradle:
sumber
Anda dapat menggunakannya
app:layout_constraintVertical_weight
sama sepertilayout_weight
dilinearlayout
CATATAN:
app:layout_constraintVertical_weight
(app:layout_constraintHorizontal_weight
) akan bekerja denganandroid:layout_width="0dp"
(android:layout_height="0dp"
sumber
Untuk seseorang yang mungkin berguna, Anda dapat menggunakan
layout_constraintDimensionRatio
im tampilan anak apa pun di dalam aConstraintLayout
dan kami dapat menentukan Tinggi atau Lebar rasio dari dimensi lain (setidaknya satu harus 0dp baik lebar atau tinggi) contohdalam hal ini rasio aspek 16: 9
app:layout_constraintDimensionRatio="16:9"
Anda dapat menemukan lebih banyak info DI SINIsumber
Saya tahu ini bukan secara langsung apa yang awalnya diminta OP tetapi ini banyak membantu saya dalam situasi ini ketika saya memiliki pertanyaan serupa .. Menambahkan ini untuk orang yang ingin mengubah ukuran jendela tata letak (yang saya gunakan secara teratur), melalui kode . Tambahkan ini ke onCreate Anda dalam aktivitas pertanyaan. (Mengubahnya menjadi 80%)
sumber
Cukup, ganti saja, dalam tag pedoman Anda
dengan
di mana 0,7 berarti 70%.
Juga jika sekarang Anda mencoba untuk menyeret pedoman, nilai yang diseret sekarang akan muncul di% age.
sumber
Menggunakan Pedoman, Anda dapat mengubah posisi menjadi berbasis persentase
Anda juga bisa menggunakan cara ini
sumber