Saya selalu membaca tentang nilai bobot lucu ini di dokumentasi Android. Sekarang saya ingin mencobanya untuk pertama kalinya tetapi tidak berfungsi sama sekali.
Seperti yang saya pahami dari dokumentasi tata letak ini:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:text="Register"
android:id="@+id/register"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dip"
weight="1" />
<Button
android:text="Not this time"
android:id="@+id/cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dip"
weight="1" />
</LinearLayout>
harus membuat dua tombol yang sejajar secara horizontal dan berbagi ruang secara merata. Masalahnya adalah kedua tombol tidak tumbuh untuk mengisi ruang.
Saya ingin tombol untuk tumbuh dan mengisi seluruh baris. Jika kedua tombol diatur untuk mencocokkan induk hanya tombol pertama yang ditampilkan dan mengisi seluruh baris.
Jawaban:
Anda tidak mengatur
layout_weight
properti. Kode Anda dibacaweight="1"
dan harus dibacaandroid:layout_weight="1"
.sumber
3 hal yang perlu diingat:
Contoh:
Dan hasilnya:
sumber
addView(button, new LinearLayout.LayoutParams(0, height, 1));
Ini benar bahkan jika Anda menggembungkan tata letak dengan nilai lebar dan berat yang benar.Ini
android:layout_weight
. Berat hanya bisa digunakan diLinearLayout
. Jika orientasi linearlayout adalah Vertikal, gunakanandroid:layout_height="0dp"
dan jika orientasinya horizontal, maka gunakanandroid:layout_width = "0dp"
. Ini akan bekerja dengan sempurna.sumber
Gambar ini merangkum tata letak Linear.
Anda dapat mengikuti tautan ini untuk informasi lebih lanjut tentang topik ini. Just Maths - Tampilan, Lihat Grup, dan Tata Letak
Video Tutorial Untuk Layout Linear: Lebar, Tinggi & Berat
Tutorial Layout Linear Android
sumber
Coba atur
layout_width
kedua tombol ke "0dip" danweight
dari kedua tombol ke0.5
sumber
LinearLayout mendukung penetapan bobot untuk masing-masing anak. Atribut ini memberikan nilai " pentingnya " ke tampilan, dan memungkinkannya berkembang untuk mengisi ruang yang tersisa di tampilan induk. Berat standar adalah nol
perhitungan untuk menetapkan sisa / ruang tambahan di antara anak. (bukan total ruang)
penugasan ruang untuk child = (berat individu anak) / (jumlah berat setiap anak dalam Tata Letak Linear)
Contoh (1): jika ada tiga kotak teks dan dua di antaranya menyatakan bobot 1, sedangkan yang ketiga tidak diberi bobot (0), maka Sisa / Ruang tambahan ditugaskan untuk
Contoh (2) : misalkan kita memiliki label teks dan dua elemen edit teks dalam baris horizontal. Label tidak memiliki layout_weight yang ditentukan, sehingga membutuhkan ruang minimum yang diperlukan untuk merender. Jika layout_weight dari masing-masing dari dua elemen edit teks diatur ke 1, lebar yang tersisa di tata letak induk akan dibagi sama rata di antara mereka (karena kami mengklaim mereka sama pentingnya).
Jika kotak teks pertama memiliki layout_weight 1 dan kotak teks kedua memiliki layout_weight 2, maka sepertiga dari ruang yang tersisa akan diberikan kepada yang pertama, dan dua pertiga untuk yang kedua (karena kami mengklaim yang kedua adalah lebih penting).
sumber
Di bidang lebar tombol, ganti
wrap-content
dengan0dp
.Gunakan atribut layout_weight tampilan.
Ini adalah bagaimana kode Anda akan terlihat seperti:
layout_weight digunakan untuk mendistribusikan ruang apa pun yang tersisa ke dalam proporsi. Dalam hal ini, kedua tombol mengambil lebar "0dp". Jadi, ruang yang tersisa akan dibagi menjadi proporsi 1: 1 di antara mereka, yaitu ruang tersebut akan dibagi secara merata di antara Tampilan Tombol.
sumber
Seperti jawaban dari @Manoj Seelan
Ganti
android:layout_weight
denganandroid:weight
.Ketika Anda menggunakan Berat dengan
LinearLayout
. Anda harus menambahkanweightSum
diLinearLayout
dan menurut orientasi AndaLinearLayout
Anda harus menetapkan0dp
untuk Lebar / Tinggi ke semuaLinearLayout
`s Anak pandanganContoh:
Jika Orientasi
Linearlayout
adalahVertical
, maka Tetapkan Lebar semuaLinearLayout
tampilan Anak dengan0dp
Jika orientasinya
Linearlayout
adalahhorizontal
, maka Atur Tinggi semuaLinearLayout
tampilan Anak dengan0dp
.sumber
Mungkin menyetel kedua tombol pada properti layout_width ke "fill_parent" akan melakukan trik.
Saya baru saja menguji kode ini dan berfungsi di emulator:
Pastikan untuk mengatur layout_width ke "fill_parent" di kedua tombol.
sumber
sumber
Dalam XML di atas, tetapkan
android:layout_weight
tata letak linear sebagai2
:android:layout_weight="2"
sumber
Plus Anda perlu menambahkan ini
android:layout_width="0dp"
untuk tampilan anak-anak [Tampilan tombol] dariLinerLayout
sumber
Anda harus menulis seperti ini Ini berfungsi untuk saya
sumber
Di bawah ini adalah perubahan (Ditandai dalam BOLD ) dalam kode Anda:
Karena LinearLayout Anda memiliki orientasi horizontal, maka Anda hanya perlu menjaga lebar Anda hanya 0dp. untuk menggunakan bobot ke arah itu.(Jika orientasi Anda vertikal, Anda akan menjaga ketinggian hanya 0dp) .
Karena ada 2 tampilan dan Anda telah menempatkan
android:layout_weight="1"
kedua tampilan tersebut, itu berarti ia akan membagi dua tampilan secara merata dalam arah horizontal (atau dengan lebar).sumber
sumber
Ini jawaban sempurna untuk masalah Anda
sumber
Pengganti
wrap_content
denganfill_parent
.sumber
sumber