Android: ScrollView vs NestedScrollView

160

Apa perbedaan antara ScrollViewdan NestedScrollView? Keduanya, perpanjang FrameLayout. Saya ingin tahu secara mendalam pro dan kontra dari keduanya.

Chintan Soni
sumber

Jawaban:

205

NestedScrollViewseperti namanya digunakan ketika ada kebutuhan untuk tampilan gulir di dalam tampilan gulir lainnya. Biasanya ini akan sulit dicapai karena sistem tidak akan dapat memutuskan tampilan mana yang akan digulir.

Di sinilah NestedScrollViewmasuk.

Roshan
sumber
Berikut ini contoh Aplikasi yang menunjukkan NestedScrollView dalam sebuah induk ScrollView: github.com/AdamSHurwitz/NestedScrolling
Adam Hurwitz
36

Selain pengguliran bersarang NestedScrollView menambahkan satu fungsi utama, yang bahkan dapat membuatnya menarik di luar konteks bersarang: Ini telah membangun dukungan untuk OnScrollChangeListener. Menambahkan OnScrollChangeListenerdengan aslinya ScrollView bawah API 23 diperlukan subclassing ScrollViewatau main-main dengan ViewTreeObserverdariScrollView yang sering berarti lebih banyak pekerjaan daripada subclassing. Dengan NestedScrollViewitu bisa dilakukan menggunakan setter bawaan .

Fabian Ochmann
sumber
21

NestedScrollView

NestedScrollView sama seperti ScrollView, tetapi mendukung akting sebagai induk dan anak pengguliran bersarang pada versi Android baru dan lama. Pengguliran bersarang diaktifkan secara default.

https://developer.android.com/reference/android/support/v4/widget/NestedScrollView.html

ScrollView

Layout kontainer untuk hierarki tampilan yang dapat digulir oleh pengguna, memungkinkannya lebih besar dari tampilan fisik. ScrollView adalah FrameLayout, artinya Anda harus menempatkan satu anak di dalamnya yang berisi seluruh konten untuk digulir; anak ini sendiri dapat menjadi manajer tata letak dengan hierarki objek yang kompleks

https://developer.android.com/reference/android/widget/ScrollView.html

Amit Vaghela
sumber
8

NestedScrollView sama seperti ScrollView, tetapi di NestedScrollView kita dapat menempatkan tampilan pengguliran lainnya sebagai anak darinya, misalnya RecyclerView.

Tetapi jika kita meletakkan RecyclerView di dalam NestedScrollView, scrolling RecyclerView yang terganggu. Jadi untuk mengembalikan scrolling mulus ada trik:

ViewCompat.setNestedScrollingEnabled(recyclerView, false);

Letakkan baris di atas setelah mengatur adaptor untuk recyclerView.

Umar Farooq
sumber
Terima kasih banyak kawan: D
Zafar Iqbal
Perlu diingat bahwa melakukan ini (recyclerView inside a Nested) cukup tidak efisien dalam hal tata letak pass / tindakan. Uji dan Anda akan melihat bagaimana RV menghentikan pandangan "daur ulang".
Martin Marconcini
2

Saya pikir satu Manfaat menggunakan tampilan Nested Scroll adalah bahwa tata letak cooridinator hanya mendengarkan untuk acara gulir bersarang. Jadi kalau untuk mantan. Anda ingin bilah alat menggulir ke bawah saat Anda menggulir konten aktivitas Anda, itu hanya akan menggulir ke bawah saat Anda menggunakan tampilan gulir bersarang di tata letak Anda. Jika Anda menggunakan tampilan gulir normal di tata letak, bilah alat tidak akan menggulir saat pengguna menggulir konten.

Vibhanshu Sharma
sumber