Baiklah, tata letak khusus ini hanya mengganggu saya. Dan sepertinya tidak dapat menemukan cara untuk memiliki listView, dengan deretan tombol di bagian bawah sehingga tampilan daftar tidak meluas ke atas tombol, sehingga tombol selalu diposisikan ke bagian bawah layar. Inilah yang saya inginkan:
menghapus tautan ImageShack mati
Sepertinya itu semudah itu, tetapi semua yang saya coba gagal. Ada bantuan?
Ini kode saya saat ini:
RelativeLayout container = new RelativeLayout(this);
container.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
//** Add LinearLayout with button(s)
LinearLayout buttons = new LinearLayout(this);
RelativeLayout.LayoutParams bottomNavParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
bottomNavParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
bottomNavParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
buttons.setLayoutParams(bottomNavParams);
ImageButton newLayer = new ImageButton(this);
newLayer.setImageResource(R.drawable.newlayer);
newLayer.setLayoutParams(new LinearLayout.LayoutParams(45, LayoutParams.FILL_PARENT));
buttons.addView(newLayer);
container.addView(buttons);
//** Add ListView
layerview = new ListView(this);
RelativeLayout.LayoutParams listParams = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
listParams.addRule(RelativeLayout.ABOVE, buttons.getId());
layerview.setLayoutParams(listParams);
container.addView(layerview);
Jawaban:
Saya pikir inilah yang Anda cari.
sumber
android:layout_above="@id/testbutton"
akan menjaga yang diListView
atasButton
.addRule(RelativeLayout.ABOVE)
aRelativeLayout
. Anda menyebutnya di aRelativeLayout.LayoutParams
. Anda kemudian menambahkanListView
keRelativeLayout
, menyediakan ituRelativeLayout.LayoutParams
. Harap pertimbangkan untuk beralih ke XML dan memekarnya, untuk pemeliharaan jangka panjang.Saya memiliki masalah yang sama selama berabad-abad.
Solusi untuk mempertahankan ListView di atas tombol, tetapi mencegahnya menutupinya saat daftarnya panjang, adalah dengan menyetel android: layout_weight = "1.0" di ListView. Biarkan layout_weight pada tombol tidak disetel agar tetap pada ukuran aslinya, jika tidak tombol akan diskalakan. Ini bekerja dengan LinearLayout.
Ada contoh di Android ApiDemos: ApiDemos / res / layout / linear_layout_9.xml
sumber
Saya baru saja mencari jawaban untuk pertanyaan ini dan ini adalah salah satu hasil pertama. Saya merasa seolah-olah semua jawaban, termasuk yang saat ini dipilih sebagai "jawaban terbaik", tidak menjawab masalah yang ditanyakan. Masalah yang sedang dinyatakan adalah bahwa ada tumpang tindih dari dua komponen
Button
danListView
ListView mengambil seluruh layar, dan Tombol secara visual mengambang di atas (di depan) ListView (memblokir tampilan / akses yang terakhir). item diListView
)Berdasarkan jawaban yang saya lihat di sini dan di forum lain, saya akhirnya sampai pada kesimpulan tentang cara mengatasi ini.
Awalnya, saya punya:
Perhatikan penggunaan
RelativeLayout
sebagai simpul akar.Ini adalah versi terakhir yang berfungsi di mana Tombol tidak tumpang tindih dengan
ListView
:Hanya ada dua perbedaan. Pertama, saya telah beralih menggunakan file
LinearLayout
. Ini akan membantu dengan bit berikutnya, yang ditambahkanandroid:layout_weight
keListView
Saya harap ini membantu.
sumber
android:layout_alignParentBottom
di dalamLinearLayout
induk, ADT akan mengatakan "Parameter tata letak tidak valid di LinearLayout: layout_alignParentBottom"!Cara terbaik adalah tata letak relatif yang menyetel tombol di bawah tampilan daftar. Dalam contoh ini, tombol juga berada dalam tata letak linier karena lebih mudah untuk meletakkannya secara berdampingan pada ukuran yang sama.
sumber
Saya tahu posting ini agak lama, tetapi, untuk menjawab pertanyaan poster asli, alasan kode tidak berfungsi adalah buttons.getId () return -1. Jika Anda akan melakukan ini, Anda perlu mengatur lakukan sesuatu seperti tombol panggil.setId (10). Jika Anda melakukan itu, kodenya berfungsi dengan baik.
sumber
ini seharusnya berhasil. agar memiliki tombol di atas tampilan daftar juga, letakkan tombol di dalam tata letak linier lainnya.
sumber
solusi termudah adalah membuat dua tata letak linier, satu dengan tombol dan yang lainnya dengan tampilan daftar (Bungkus konten pada tinggi tombol dan cocokkan induk pada tinggi tata letak daftar). lalu hanya buat tampilan gulir di atas tata letak dengan tampilan daftar dan tata letak tombol akan diabaikan. semoga membantu, maaf saya tidak merasa ingin menulis kode.
sumber