Bagaimana saya bisa mengatur nilai untuk atribut layout_weight
untuk tombol di android secara dinamis dari kode java?
245
Bagaimana saya bisa mengatur nilai untuk atribut layout_weight
untuk tombol di android secara dinamis dari kode java?
Jawaban:
Anda dapat meneruskannya sebagai bagian dari
LinearLayout.LayoutParams
konstruktor:Parameter terakhir adalah bobot.
sumber
param = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, (float) 1.0);
1f
jika tidak ada tempat desimalRelative
Gunakan
LinearLayout.LayoutParams
:EDIT: Ah, jawaban Erich lebih mudah!
sumber
FILL_PARENT
telah usang danMATCH_PARENT
harus digunakan sebagai gantinya.MATCH_PARENT
dapat digunakan sebagai penggantiFILL_PARENT
bahkan pada perangkat yang lebih lama.FILL_PARENT
vsMATCH_PARENT
.Jika Anda sudah mendefinisikan tampilan dalam file tata letak (xml), hanya ingin mengubah bobot secara program, cara ini lebih baik
baru a LayoutParams menimpa params lain yang didefinisikan dalam file xml Anda seperti margin, atau Anda perlu menentukan semuanya di LayoutParams.
sumber
Jika konstruktor dengan lebar, tinggi dan berat tidak berfungsi, coba gunakan konstruktor dengan lebar dan tinggi. Dan kemudian secara manual mengatur berat.
Dan jika Anda ingin lebar diatur sesuai dengan berat, atur lebar sebagai 0 pada konstruktor. Hal yang sama berlaku untuk ketinggian. Kode di bawah ini berfungsi untuk saya.
sumber
Jika saya seseorang mencari jawaban, gunakan ini:
Jika Anda menginisialisasi tata letak Anda dari file xml, ini akan jauh lebih nyaman daripada memberikan parameter tata letak baru untuk Tata Letak Linear.
sumber
layout_weight
sudah ditata, Anda perlu meneleponView.requestLayout()
untuk memperbarui.Salah satu dari
LinearLayout.LayoutParams
danTableLayout.LayoutParams
bekerja untuk saya, untuk tombol yang tepatTableRow.LayoutParams
. Itu adalah:Tentang menggunakan
MATCH_PARENT
atauWRAP_CONTENT
menjadi sama.sumber
FILL_PARENT
telah usang danMATCH_PARENT
harus digunakan sebagai gantinya.LayoutParams
orangtua langsung. Saya berasumsi Anda mengalami kerusakan saat mencoba menggunakanLinearLayout.LayoutParams
tanpa orang tuaLinearLayout
.Jika Anda sudah mendefinisikan tampilan dalam file layout (xml) dan hanya ingin mengubah bobotnya tata bahasa, maka membuat LayoutParams baru akan menimpa params lain yang ditentukan dalam file xml Anda.
Jadi pertama-tama Anda harus menggunakan "getLayoutParams" dan kemudian setLayoutParams
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) mButton.getLayoutParams(); params.weight = 4f; mButton.setLayoutParams(params);
sumber
Jika
layoutparams
sudah didefinisikan (dalam XML atau dinamis), Berikut ini adalah satu baris:sumber
Menggunakan Kotlin Anda dapat melakukan sesuatu seperti:
sumber