Tengo un ViewPager
que instancia a View
. Me gustaría deshabilitar momentáneamente el desplazamiento del visor y los botones secundarios mientras se devuelve un resultado de búsqueda a la vista. Estoy llamando viewPager.setEnabled(false)
pero esto no lo deshabilita.
¿Alguien tiene alguna idea?
android
android-viewpager
mAndroid
fuente
fuente
Respuestas:
Una solución sencilla es crear su propia subclase de
ViewPager
que tiene unaprivate boolean
bandera,isPagingEnabled
. Luego anule los métodosonTouchEvent
yonInterceptTouchEvent
. SiisPagingEnabled
es igual a verdadero invoque elsuper
método, de lo contrarioreturn
.Luego, en su
Layout.XML
archivo, reemplace las<com.android.support.V4.ViewPager>
etiquetas con<com.yourpackage.CustomViewPager>
etiquetas.Este código fue adaptado de esta publicación de blog .
fuente
Hay una solución fácil para este:
Cuando desee deshabilitar el desplazamiento del visor, entonces:
Y cuando quieras volver a habilitarlo, entonces:
Eso hará el truco.
fuente
Aquí está mi variante ligera de la respuesta de slayton:
Con mi código puede deshabilitar la paginación con
setEnable()
.fuente
onInterceptTouchEvent()
evitará que las vistas secundarias reciban información. En la mayoría de los casos, este no es el comportamiento previsto.Encontré una solución simple.
fuente
Sugiero otra forma de resolver este problema. La idea es envolver su viewPager con un scrollView, de modo que cuando este scrollView no sea desplazable, su viewPager tampoco sea desplazable.
Aquí está mi diseño XML:
No se necesita código.
Funciona bien para mi.
fuente
Para deshabilitar deslizar
Para habilitar deslizar
fuente
La mejor solución que funcionó para mí es:
Después de esto, el desplazamiento se deshabilitará al tocarlo y aún podrá usar el
setCurrentItem
método para cambiar de página.fuente
canScrollHorizontally()
método no tiene efecto en el escenario actual. Ni siquiera se llama cuando ocurre el deslizamiento.Aquí hay una respuesta en Kotlin y androidX
fuente
¿Qué tal esto?
Utilicé
CustomViewPager
y luego, anule el método scrollTo
. Revisé el movimiento al hacer muchos pequeños deslizamientos, no se desplaza a otras páginas.
fuente
View.scrollTo(int x, int y)
resolvió este problema para mí. GraciasEn mi caso de usar ViewPager 2 alpha 2, el siguiente fragmento funciona
viewPager.isUserInputEnabled = false
consulte esto para obtener más cambios en viewpager2 1.0.0-alpha02
También se realizaron algunos cambios en la última versión de ViewPager 2 alpha 4
consulte esto para obtener más cambios en viewpager2 # 1.0.0-alpha04
fuente
La nueva clase ViewPager2 de androidx permite deshabilitar el desplazamiento con el método setUserInputEnabled (falso)
fuente
La respuesta de slayton funciona bien. Si desea dejar de deslizarse como un mono, puede anular un OnPageChangeListener con
Así que solo puedes deslizar uno al lado del otro
fuente
setPagingEnabled()
método. Por favor incluya el código completo.Luego, en su archivo Layout.XML, reemplace las etiquetas --- com.android.support.V4.ViewPager --- con --- com.yourpackage.NonSwipeableViewPager --- etiquetas.
fuente