2011-10-26 14 views
12

Tengo un widget ViewPager en cada fila de un ListView. Esto proporciona una IU similar a un estante, por lo que el usuario puede desplazarse por la búsqueda de un estante verticalmente y luego desplazarse horizontalmente entre los contenidos de un estante. Esto funciona.ViewPager en un ListView: cómo bloquear el eje de desplazamiento?

Pero la experiencia de desplazamiento es terrible: si empiezo a arrastrar ViewPager de un estante, desplácelo horizontalmente y accidentalmente arrastre un poco hacia arriba/abajo, entonces ListView "atrapa" esta acción de arrastre y comienza a desplazarse verticalmente, terminando mi arrastre horizontal En este estado, la acción de arrastre no "regresará" a ViewPager, el ListView lo tiene, y eso es todo. Tengo que comenzar otra acción de arrastre para afectar nuevamente a ViewPager. Así que supongo que ListView tiene prioridad en estos casos.

¿Cómo se puede solucionar? Me gustaría lograr exactamente lo contrario: si el ViewPager dentro de una fila de la lista comienza a reaccionar a un arrastre horizontal, entonces debe atrapar esa acción, y este arrastre debería dejar de afectar al ListView, sin importar cómo el usuario mueva su dedo verticalmente Se puede hacer esto?

+7

Encontré la respuesta, aquí: http://stackoverflow.com/questions/2646028/android-horizontalscrollview-within-scrollview-touch-handling –

+0

En ese caso, lo mejor que puedes hacer es cerrar esta pregunta como un duplicado (si cree que las preguntas fueron lo suficientemente cercanas), o si son lo suficientemente diferentes, envíe el enlace como respuesta y márquelo como la "respuesta seleccionada". De esta manera, no aparecerá más como una pregunta no contestada, votada :) –

+0

Tienes razón, esta pregunta que se muestra como no contestada es confusa, he agregado una respuesta adecuada. Creo que es lo suficientemente diferente, no lo marcaría como un duplicado exacto. –

Respuesta

3

He encontrado una solución en el hilo this. Ahí el problema es manejar eventos táctiles correctamente para un HorizontalScrollView dentro de un ScrollView normal, pero la solución a ese problema parece aplicarse a este también.

Cuestiones relacionadas