Cómo limitar los cambios de página de ViewPager a uno por gesto

Cuando utiliza setPageMargin para establecer un margen negativo en su ViewPager, las páginas serán más pequeñas que el ancho total del ViewPager. El efecto secundario de esto es que el usuario puede utilizar un gesto largo para cambiar la página activa más de una vez.

¿Hay alguna manera de evitar que un solo gesto cambie la página más de una vez?

He intentado detener los eventos de movimiento de llegar al buscapersonas, pero tendrá que dejar que el MotionEvent.ACTION_UP para pasar o el paginador no funciona correctamente. El up también activa los cálculos basados ​​en velocidad en ViewPager y causa un cambio de página adicional cuando se activa.

O necesito reajustar la velocidad de la fricción o necesito de alguna manera prevenir cambios adicionales de la página.

He utilizado el método descrito en la respuesta de esta pregunta para detener el desplazamiento, pero el problema ACTION_UP descrito me impide completarlo. ¿Es posible desactivar el desplazamiento en un ViewPager?

¿Algunas ideas?

One Solution collect form web for “Cómo limitar los cambios de página de ViewPager a uno por gesto”

No sé exactamente lo que está tratando de lograr aquí, pero en lugar de utilizar un margen negativo no sería mejor para el usuario getPageWidth () en el PagerAdapter para hacer el ancho de las páginas más pequeño que el ancho ViewPager?

Editar

Ok, he llegado con una solución 'hacky', que consiste en copiar el código fuente de ViewPager en su proyecto y modificar un poco performDrag (), por lo que no arrastrará más de una página.

Este Hack funciona con algunas suposiciones:

  1. Utiliza getPageWidth () para determinar el tamaño relativo de las páginas
  2. Todas las páginas deben devolver el mismo valor getPageWidth ()

Puede comprobar el proyecto de ejemplo y las modificaciones de ViewPager

No es una solución hermosa o elegante, pero funciona, y finalmente voy a cerrar un boleto de 3 meses de edad con este mismo problema, por lo que gerente feliz 🙂

  • Android ViewPager w / varias clases de fragmentos cada w / archivo de diseño independiente
  • Cómo crear las pestañas de la barra de herramientas con ViewPager en el diseño del material
  • Android: ¿Cómo agregar iconos / drawables a la PagerTabStrip de la versión 4 de Android Support Lib?
  • No se puede convertir de android.support.v4.app.Fragment a android.app.Fragment
  • ¿Cómo dejar que sólo fragmentos específicos desplazarse dentro de un ViewPager de CoordinatorLayout?
  • Android.support.v4.app.FragmentManager y android.app.FragmentManager en ViewPager
  • Asistente condicional / inicialización con ViewPager
  • PagerTabStrip: cambia el ancho de la pestaña
  • Barra de Acción de Android Sherlock con Tabs
  • Reemplazar un fragmento con otro en ViewPager
  • Actualizar imágenes en FragmentStatePagerAdapter al reanudar la actividad
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.