Saya punya ViewPager
instantiates a View
. Saya ingin menonaktifkan penggulir viewpager dan tombol anak untuk sementara waktu sementara hasil pencarian dikembalikan ke tampilan. Saya sudah menelepon viewPager.setEnabled(false)
tetapi ini tidak menonaktifkannya.
Ada yang punya ide?
android
android-viewpager
mAndroid
sumber
sumber
Jawaban:
Solusi sederhana adalah membuat subclass Anda sendiri
ViewPager
yang memilikiprivate boolean
flagisPagingEnabled
,. Kemudian timpa metodeonTouchEvent
danonInterceptTouchEvent
. JikaisPagingEnabled
sama dengan benar memanggilsuper
metode, jika tidakreturn
.Kemudian di
Layout.XML
file Anda ganti semua<com.android.support.V4.ViewPager>
tag dengan<com.yourpackage.CustomViewPager>
tag.Kode ini diadaptasi dari posting blog ini .
sumber
Ada perbaikan yang mudah untuk ini:
Ketika Anda ingin menonaktifkan scroll viewpager maka:
Dan ketika Anda ingin mengaktifkannya kembali maka:
Itu akan melakukan triknya.
sumber
Inilah varian ringan dari jawaban slayton saya:
Dengan kode saya, Anda dapat menonaktifkan paging dengan
setEnable()
.sumber
onInterceptTouchEvent()
akan mencegah pandangan anak untuk menerima input. Dalam kebanyakan kasus ini bukan perilaku yang dimaksudkan.Saya menemukan solusi sederhana.
sumber
Saya menyarankan cara lain untuk mengatasi masalah ini. Idenya adalah membungkus viewPager Anda dengan scrollView, sehingga ketika scrollView ini tidak dapat digulir, viewPager Anda juga tidak dapat digulir.
Berikut ini adalah tata letak XML saya:
Tidak diperlukan kode.
Bekerja dengan baik untuk saya.
sumber
Untuk menonaktifkan geser
Untuk mengaktifkan gesek
sumber
Solusi terbaik yang bekerja untuk saya adalah:
Setelah ini gulir akan dinonaktifkan dengan sentuhan dan kemudian Anda masih dapat menggunakan
setCurrentItem
metode untuk mengubah halaman.sumber
canScrollHorizontally()
Metode tidak berpengaruh dalam skenario saat ini. Bahkan tidak dipanggil ketika swipe terjadi.Inilah jawaban di Kotlin dan AndroidX
sumber
Bagaimana dengan ini:
Saya menggunakan
CustomViewPager
dan selanjutnya, menimpa scrollUntuk
saya memeriksa gerakan ketika melakukan banyak gesekan kecil, itu tidak gulir ke halaman lain.
sumber
View.scrollTo(int x, int y)
mengatasi memecahkan masalah ini untuk saya. Terima kasihDalam kasus saya menggunakan ViewPager 2 alpha 2, potongan di bawah ini berfungsi
viewPager.isUserInputEnabled = false
lihat ini untuk lebih banyak perubahan dalam viewpager2 1.0.0-alpha02
Juga beberapa perubahan dibuat versi terbaru ViewPager 2 alpha 4
lihat ini untuk lebih banyak perubahan dalam viewpager2 # 1.0.0-alpha04
sumber
ViewPager2 kelas baru dari androidx memungkinkan untuk menonaktifkan pengguliran dengan metode setUserInputEnabled (false)
sumber
Jawaban slayton bekerja dengan baik. Jika Anda ingin berhenti menggesekkan seperti monyet, Anda bisa mengganti OnPageChangeListener dengan
Jadi Anda hanya bisa menggesek berdampingan
sumber
setPagingEnabled()
yang dilakukan metode ini. Harap sertakan kode lengkap.Kemudian di file Layout.XML Anda ganti tag --- com.android.sup.V4.ViewPager --- dengan tag --- com.yourpackage.NonSwipeableViewPager ---.
sumber