Saya sedang merancang UI aplikasi saya. Saya perlu tata letak seperti ini:
(<dan> adalah Tombol). Masalahnya adalah, saya tidak tahu bagaimana memastikan TextView akan mengisi ruang yang tersisa, dengan dua tombol memiliki ukuran tetap.
Jika saya menggunakan fill_parent untuk Tampilan Teks, tombol kedua (>) tidak dapat ditampilkan.
Bagaimana saya bisa membuat tata letak yang terlihat seperti gambar?
android
layout
android-layout
Luke Vo
sumber
sumber
Jawaban:
Jawaban dari woodshy bekerja untuk saya, dan itu lebih sederhana daripada jawaban oleh Ungureanu Liviu karena tidak digunakan
RelativeLayout
. Saya memberikan tata letak untuk kejelasan:sumber
alignLeft
danalignParentLeft
, dll, yang tidak pernah dapat dicapai denganLinearLayout
.Jika <TEXT VIEW> ditempatkan di LinearLayout, atur proprty Layout_weight dari <dan> ke 0 dan 1 untuk TextView.
Dalam kasus RelativeLayout menyelaraskan <dan> ke kiri dan ke kanan dan mengatur "Layout ke kiri" dan "Layout ke kanan" properti TextView ke id dari <dan>
sumber
Jika Anda menggunakan
RelativeLayout
, Anda bisa melakukannya seperti ini:sumber
>
tombol?Menggunakan
ConstraintLayout
, saya menemukan sesuatu sepertibekerja. Kuncinya adalah mengatur batas tepi kanan, kiri, atas, dan bawah secara tepat, kemudian mengatur lebar dan tinggi ke
0dp
dan membiarkannya mengetahui ukurannya sendiri.sumber
TextView
memiliki kendala kiri dan kanan. TidakTextView
meregang jika yang pertamaButton
memiliki kendala kanan keTextView
dan yang terakhirButton
memiliki kendala kiri keTextView
.Sederhana Anda mengatur minWidth atau minHeight, tergantung pada apa yang Anda cari, horizontal atau vertikal. Dan untuk objek lain (yang ingin Anda isi sisa ruang) Anda menetapkan bobot 1 (mengatur lebar untuk membungkus konten itu), Jadi itu akan mengisi seluruh area.
sumber
Anda dapat menggunakan atribut layout_weight tinggi. Di bawah ini Anda dapat melihat tata letak tempat ListView mengambil semua ruang kosong dengan tombol di bagian bawah:
sumber
Bagi mereka yang memiliki kesalahan yang sama dengan yang
<LinearLayout...>
saya lakukan:Penting untuk menentukan
android:layout_width="fill_parent"
, itu tidak akan bekerja denganwrap_content
.OTOH, Anda dapat menghilangkan
android:layout_weight = "0"
, itu tidak diperlukan.Kode saya pada dasarnya sama dengan kode di https://stackoverflow.com/a/25781167/755804 (oleh Vivek Pandey)
sumber
Anda harus menghindari bersarang 2 tata letak relatif karena tata letak relatif selalu membuat 2 pass untuk menggambar (terhadap 1 untuk jenis tata letak lainnya). Menjadi eksponensial saat Anda membuat sarang. Anda harus menggunakan tata letak linier dengan lebar = 0 dan berat = 1 pada elemen yang Anda ingin isi ruang yang tersisa. Jawaban ini lebih baik untuk kinerja dan praktik. Ingat: gunakan tata letak relatif SAJA ketika Anda tidak punya pilihan lain.
sumber
Anda dapat menggunakan set the
layout_width
ataulayout_width
to0dp
(Dengan orientasi Anda ingin mengisi sisa ruang) Kemudian gunakanlayout_weight
untuk membuatnya mengisi ruang yang tersisa.sumber
gunakan Relativelayout untuk membungkus LinearLayout
sumber
saya menemukan
sumber
Saat menggunakan tata letak relatif, Anda dapat membuat peregangan tampilan dengan menambatkannya ke kedua tampilan yang seharusnya melebar. Meskipun ketinggian yang ditentukan akan diabaikan, Android masih memerlukan atribut ketinggian, itulah sebabnya saya menulis "0dp". Contoh:
sumber