Estoy usando un HorizontalScrollView
diseño y necesito identificar que el usuario ha alcanzado el punto inicial y final del desplazamiento.
Porque ListView
he intentado con el onScrollListener
y es posible encontrar el punto inicial y final del desplazamiento.
Traté de hacer lo mismo en mi Scrollview
pero parece que no es posible. ¿Hay alguna otra forma posible de lograr lo que necesito?
android
listener
scrollview
arnp
fuente
fuente
onStart
hacer el truco:hsv.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {@Override public void onScrollChanged() {Log.i(TAG,"scroll:"+hsv.getScrollX());}});
en onStart () dondehsv
es unaHorizontalScrollView
obra.Respuestas:
Cada instancia de Ver llamadas
getViewTreeObserver()
. Ahora, al mantener una instancia deViewTreeObserver
, puede agregarle unaOnScrollChangedListener()
mediante el métodoaddOnScrollChangedListener()
.Puede ver más información sobre esta clase aquí .
Le permite estar al tanto de cada evento de desplazamiento, pero sin las coordenadas. Sin embargo, puede obtenerlos utilizando
getScrollY()
ogetScrollX()
desde el oyente.fuente
hsv.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {@Override public void onScrollChanged() {Log.i(TAG,"scroll:"+hsv.getScrollX());}});
en onStart () dondehsv
es unHorizontalScrollView
trabajo. Sospecho que lo mismo funcionará para un ScrollView también.add
y noset
, todos los oyentes serán retenidos hasta que se eliminen explícitamente. Por lo tanto, la clase anónima utilizada como implementación de escucha en la muestra se filtrará (junto con todo lo que hace referencia, es decir, la clase externa).Esto puede ser muy útil. Usar en
NestedScrollView
lugar deScrollView
. Support Library 23.1 introdujo unOnScrollChangeListener
toNestedScrollView
. Entonces puedes hacer algo como esto.fuente
NestedScrollView
es parte de la biblioteca de soporte, susetOnScrollChangeListener
método no tiene un requisito mínimo de versión.View
'ssetOnScrollChangeListener
que requiere API nivel 23Aquí hay un HorizontalScrollView derivado que escribí para manejar notificaciones sobre desplazamiento y finalización de desplazamiento. Maneja adecuadamente cuando un usuario ha dejado de desplazarse activamente y cuando desacelera por completo después de que un usuario suelta:
fuente
Si desea conocer la posición de desplazamiento de una vista, puede usar la siguiente función de extensión en la clase Vista:
fuente
Puedes usar en
NestedScrollView
lugar deScrollView
. Sin embargo, cuando se utiliza un Kotlin Lambda, no sabrá que desea NestedScrollView's ensetOnScrollChangeListener
lugar de uno en View (que es el nivel 23 de API). Puede solucionar esto especificando el primer parámetro como NestedScrollView.fuente
fuente
puede definir una clase personalizada de ScrollView y agregar una interfaz que se llamará al desplazarse así:
fuente