Biasanya, kami tidak akan menyarangkan ListView di ScrollView, tetapi tidak apa -apa jika pewawancara bersikeras bahwa saya bersarang.
Menambahkan ListView ke scrollView akan menyebabkan kontrol ListView tidak lengkap, dan biasanya hanya satu yang akan ditampilkan. Apa alasannya?
Konflik peristiwa gulir antara kedua kontrol menghasilkan . Oleh karena itu, perlu untuk menghitung ketinggian tampilan dari ListView melalui jumlah item dalam ListView untuk membuatnya sepenuhnya ditampilkan. Metode berikut disediakan untuk referensi Anda.
Solusinya adalah sebagai berikut:
lv = (ListView) findViewById (r.id.lv); adaptor = myAdapter baru (); lv.setAdapter (adaptor); setListViewHeightBasedOnChildren (LV); --------------------------------------------------- Public Void SetListViewHeightBasedOnChildren (ListView ListView) {ListAdapter ListAdapter = ListView.GetAdapter (); if (listAdapter == null) {return; } int totalheight = 0; untuk (int i = 0; i <listAdapter.getCount (); i ++) {view listItem = listAdapter.getView (i, null, listView); ListItem.Measure (0, 0); TotalHeight += listItem.getMeasuredHeight (); } Viewgroup.layoutparams params = listView.getLayoutParams (); params.height = TotalHeight + (listView.getDividerHeight () * (listAdapter.getCount () - 1)); params.height += 5; listView.setLayoutParams (params); }Cara terbaik untuk menghadapinya pada tahap ini adalah: ListView Kustom, Metode OnMeasure () Overvent, dan atur semua tampilan.
impor android.widget.listView; / ** * * @Description: Implementasi sederhana dari ListView tertanam di scrollView * * @file: ScrollViewWithListView.java * * * @Version */ kelas publik scrollviewWithListView memperluas ListView {public scrollviewWithListView (android.content.context Context, and dan public scrollview. dan contents.croid. } / ** * integer.max_value >> 2. Jika tidak diatur, pengaturan default sistem adalah untuk menampilkan dua bagian * / public void onMeasure (int widthMeaseureSpec, int heightmeaseureSpec) {int expandspec = Measurespec.makeMeaseSpec (integer.max_value >> 2, 2, MakureSurePec super.onMeasure (widthmeasurespec, expandspec); }}Konten di atas adalah solusi untuk menyematkan ListView di ScrollView yang diperkenalkan oleh editor kepada Anda. Saya harap ini akan membantu semua orang!