Tips : Mengatasi ScrollView dan ListView Pada Android Dalam Satu Layout
Bagi yang melakukan implementasi ScrollView dan ListView dalam satu layout di android, akan menyebabkan scrollview tidak berfungsi atau tampilannya tidak sesuai dengan diharapkan. Ini dikarenakan keduanya memiliki fungsi yang sama, yaitu scroll.
Namun, anda dapat mengatasi dengan sejumlah cara agar dapat berfungsi, yaitu :
1. code 1:
ListView lv = (ListView) findViewById(R.id.layout_lv);
lv.setOnTouchListener(new OnTouchListener() {
// Setting on Touch Listener for handling the touch inside ScrollView
@Override
public boolean onTouch(View v, MotionEvent event) {
// Disallow the touch request for parent scroll on touch of child view
v.getParent().requestDisallowInterceptTouchEvent(true);
return false;
}
});Kode diatas akan scrollview dan listview anda berfungsi, namun pada listview layout_height nya hanya menampilkan satu baris data yang dapat discroll.
2. code 2 :
ListView list = (ListView) view.findViewById(R.id.ls);
setListViewHeightBasedOnChildren(list);methode setListViewHeightBasedOnChilder :
/**** Method for Setting the Height of the ListView dynamically.
**** Hack to fix the issue of not showing all the items of the ListView
**** when placed inside a ScrollView ****/
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null)
return;
int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(), MeasureSpec.UNSPECIFIED);
int totalHeight = 0;
View view = null;
for (int i = 0; i < listAdapter.getCount(); i++) {
view = listAdapter.getView(i, view, listView);
if (i == 0)
view.setLayoutParams(new ViewGroup.LayoutParams(desiredWidth, LayoutParams.WRAP_CONTENT));
view.measure(desiredWidth, MeasureSpec.UNSPECIFIED);
totalHeight += view.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
listView.requestLayout();
}sementara code 2, akan membuat layout_height menjadi dinamis dibandingkan code 1.
selamat mencoba :)
Bacaan terkait
Cara Install Composer di Windows Dengan Mudah
Composer adalah dependency manager yang sangat populer untuk pengembangan aplikasi berbasis PHP. Di artikel ini, Anda akan belajar cara menginstal Composer di Window...
10 Tips dan Trik Composer yang Wajib Diketahui Developer PHP
Composer adalah dependency manager yang sangat penting bagi developer PHP. Meskipun terlihat sederhana, ada banyak fitur dan trik yang sering terlewatkan. Berikut ad...
Install Golang di Mac
Berikut adalah panduan untuk menginstal Go (Golang) di macOS: 1. Mengunduh dan Menginstal Go Anda dapat menginstal Go menggunakan beberapa metode, termasuk Homebrew...
Komentar (0)
Belum ada komentar. Jadilah yang pertama.
Tulis komentar
Komentar akan dimoderasi sebelum tampil.