Lompat ke konten
A alfach.com

Tips : Mengatasi ScrollView dan ListView Pada Android Dalam Satu Layout

A alfach.com
1 menit baca
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:

Java
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 :

Kode
ListView list = (ListView) view.findViewById(R.id.ls);
setListViewHeightBasedOnChildren(list);

methode setListViewHeightBasedOnChilder :

Kode
/**** 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

Development

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...

2 menit

Komentar (0)

Belum ada komentar. Jadilah yang pertama.

Tulis komentar

Komentar akan dimoderasi sebelum tampil.

Tidak akan dipublikasikan.