2011-08-16 13 views
6

Tenemos una vista de desplazamiento horizontal principal en nuestra actividad, y varias vistas de desplazamiento vertical anidadas en su interior. La idea es desplazarse horizontalmente hasta que encuentre la lista vertical que desea, luego deslícela hacia arriba y hacia abajo.Desplazamiento anidado en Android

Idealmente, me gustaría que el desplazamiento vertical tenga un "bloqueo" una vez que comience a desplazarse verticalmente. Lo que sucede ahora, si eres muy cuidadoso, puedes desplazarte verticalmente, pero si mueves el dedo un poco demasiado hacia la izquierda/derecha mientras lo haces, la vertical se detiene y la horizontal toma el control.

Lo que probablemente tenga sentido es que cualquier vista de desplazamiento que se "active" primero por su movimiento, esa se mantendrá activa hasta que termine su interacción (es decir, retire su dedo).

¿Hay alguna forma de que se comporte así?

Respuesta

1

Puede ser mejor usar un ViewPager para deslizar horizontalmente, si funcionara para su aplicación.

Si eso no funciona, pruebe reemplazando el método onTouch de los ScrollViews verticales de manera que impidan la vista de desplazamiento horizontal de desplazamiento utilizando

scrollView.setEnabled(false) 

Tener ScrollViews anidadas dentro de otras ScrollViews es generalmente una mala práctica ya que generalmente es más difícil para el usuario navegar, por lo que es posible que deba considerar el rediseño de esa actividad para evitar este problema.

Si debe utilizar ScrollViews anidados, encontré esta clase two-dimensional ScrollView que puede ayudarle.

+1

+1 para el bit de mala práctica. Intenté algo así una vez, y fue tan frustrante que terminé rehaciendo toda la interfaz de usuario, y resultó mucho mejor y amigable para los dedos. Simplemente no vale la pena el esfuerzo para la mayoría de los casos. – Geobits

Cuestiones relacionadas