Saya mencoba membuat TableRow
objek secara dinamis dan menambahkannya ke TableLayout
. The TableRow
benda memiliki 2 item, seorang TextView
dan CheckBox
. The TextView
item harus memiliki tata letak set berat badan mereka untuk 1 untuk mendorong CheckBox
item ke kanan.
Saya tidak dapat menemukan dokumentasi tentang cara mengatur berat tata letak suatu TextView
item secara terprogram .
TextView tv = (TextView) findViewById(R.id.your_textview_inside_the_linearlayout); tv.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0.1f));
TableRow.LayoutParams
sebaiknya digunakan sebagai gantiTableLayout.LayoutParams
. Lihat jawaban @ Dorje.Jawabannya adalah Anda harus menggunakan TableRow.LayoutParams, bukan LinearLayout.LayoutParams atau LayoutParams lainnya.
LayoutParams yang berbeda tidak dapat dipertukarkan dan jika Anda menggunakan yang salah, sepertinya tidak ada yang terjadi. Induk tampilan teks adalah baris tabel, karenanya:
http://developer.android.com/reference/android/widget/TableRow.LayoutParams.html
sumber
LayoutParams
TableRow.LayoutParams
melakukan pekerjaan untuk saya jugaDalam jawaban sebelumnya, berat diberikan ke konstruktor objek SomeLayoutType.LayoutParams yang baru. Masih dalam banyak kasus lebih mudah untuk menggunakan objek yang ada - itu membantu untuk menghindari berurusan dengan parameter yang kita tidak tertarik.
Sebuah contoh:
sumber
1f dinyatakan sebagai berat = 1; Anda dapat memberikan 2f atau 3f, tampilan akan memindahkan aksen ke ruang
sumber
hanya mengatur tata letak params di tata letak seperti itu
buat variabel param
1f adalah variabel bobot
atur widget atau tata letak Anda
sumber
LinearLayout.LayoutParams
konstruktor. Parameter ke-3 adalah bobot. Atau dokumentasi(ATAU)
1f disebut sebagai berat = 1; sesuai dengan kebutuhan Anda, Anda dapat memberikan 2f atau 3f, tampilan akan memindahkan accoding ke ruang. Untuk membuat jarak yang ditentukan antara tampilan dalam tata letak Linear gunakan weightsum untuk "LinearLayout".
sumber
Ini seharusnya bekerja untuk Anda
sumber
Anda juga dapat memberikan bobot secara terpisah seperti ini,
sumber
Ini bekerja untuk saya, dan saya harap ini akan bekerja untuk Anda juga
Tetapkan LayoutParams untuk tampilan induk terlebih dahulu:
kemudian atur untuk TextView (anak):
sumber
Ada cara lain untuk melakukan ini. Jika Anda hanya perlu menetapkan satu parameter, misalnya 'tinggi':
sumber
Setelah berjuang selama 4 jam. Akhirnya, kode ini bekerja untuk saya.
3 Kolom ada berturut-turut.
sumber
Saya memiliki cukup banyak kesulitan dengan solusi sesuatu yang sangat mirip dengan ini: mencoba untuk memiliki dua tombol di TableRow, dengan masing-masing menjadi setengah lebar layar. Untuk alasan apa pun, tombol kiri akan selalu sekitar 70% dari lebar, dan tombol kanan 30%. Memanggil table_layout.setStretchAllColumns (true) tidak berpengaruh, juga tidak mengatur lebar tombol menjadi setengah layar, atau mengatur berat tata letak mereka.
Solusi saya berakhir dengan itu bersarang sebuah LinearLayout di TableRows, yang tidak memperhitungkan nilai dari lebar tombol.
sumber
layout_width=fill_parent
, dan setelah melakukan itu, aturlayout_weight=1
untuk kedua button1 dan button2. Semua elemen dengan fill_parent dan layout_weight = 1 akan diberi ukuran yang sama pada inflasi.