Saya menggunakan HorizontalScrollView
dalam tata letak dan saya perlu mengidentifikasi pengguna telah mencapai titik awal dan akhir dari gulir.
Karena ListView
saya telah mencoba onScrollListener
dan mungkin untuk menemukan titik awal dan akhir gulir.
Saya mencoba melakukan hal yang sama Scrollview
tetapi saya tampaknya tidak mungkin. Apakah ada cara lain yang mungkin untuk mencapai apa yang saya butuhkan.
android
listener
scrollview
arnp
sumber
sumber
onStart
akan melakukan trik:hsv.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {@Override public void onScrollChanged() {Log.i(TAG,"scroll:"+hsv.getScrollX());}});
di onStart () di manahsv
adalahHorizontalScrollView
karya.Jawaban:
Setiap instance dari View calls
getViewTreeObserver()
. Sekarang saat memegang instanceViewTreeObserver
, Anda dapat menambahkannyaOnScrollChangedListener()
menggunakan metodeaddOnScrollChangedListener()
.Anda dapat melihat informasi lebih lanjut tentang kelas ini di sini .
Ini memungkinkan Anda mengetahui setiap acara gulir - tetapi tanpa koordinat. Anda bisa mendapatkannya dengan menggunakan
getScrollY()
ataugetScrollX()
dari dalam pendengar.sumber
hsv.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {@Override public void onScrollChanged() {Log.i(TAG,"scroll:"+hsv.getScrollX());}});
di onStart () di manahsv
adaHorizontalScrollView
karya. Saya menduga hal yang sama akan bekerja untuk ScrollView juga.add
dan tidakset
, semua pendengar akan dipertahankan hingga dihapus secara eksplisit. Jadi kelas anonim yang digunakan sebagai implementasi pendengar dalam sampel akan bocor (bersama dengan apa pun itu referensi, yaitu kelas luar).Ini mungkin sangat berguna. Gunakan
NestedScrollView
sebagai gantiScrollView
. Perpustakaan Dukungan 23.1 memperkenalkan sebuahOnScrollChangeListener
keNestedScrollView
. Jadi Anda bisa melakukan hal seperti ini.sumber
NestedScrollView
adalah bagian dari pustaka dukungan,setOnScrollChangeListener
metodenya tidak memiliki persyaratan versi minimum.View
'ssetOnScrollChangeListener
yang membutuhkan tingkat API 23Ini adalah HorizontalScrollView turunan yang saya tulis untuk menangani notifikasi tentang pengguliran dan gulir yang berakhir. Itu benar menangani ketika pengguna telah berhenti gulir aktif dan ketika itu sepenuhnya melambat setelah pengguna melepaskan:
sumber
Jika Anda ingin mengetahui posisi gulir tampilan, maka Anda dapat menggunakan fungsi ekstensi berikut pada kelas tampilan:
sumber
Anda bisa menggunakan
NestedScrollView
bukanScrollView
. Namun, ketika menggunakan Kotlin Lambda, ia tidak akan tahu Anda menginginkan NestedScrollViewsetOnScrollChangeListener
daripada yang ada di View (yang merupakan level API 23). Anda dapat memperbaikinya dengan menetapkan parameter pertama sebagai NestedScrollView.sumber
sumber
Anda dapat menentukan kelas ScrollView khusus, & menambahkan antarmuka dipanggil saat menggulir seperti ini:
sumber