Detener el desplazamiento en una vista de lista
Tengo en mi actividad un listview y un imagebutton. Cuando hago clic en el imagebutton Quiero ir a una posición específica en la lista (lo hago llamando a: setSelection (int position) en la lista El problema se produce cuando el usuario lanza el listview y luego hace clic en el imagebutton. A la posición especificada pero continúa desplazándose.
p.ej. Cuando entro en el modo de fling, haga clic en el botón, luego voy a la cuarta posición, pero la lista sigue desplazándose, así que termino con una selección de 25
- Infinite Auto Scroll ListView con velocidad de desplazamiento controlada
- Android :: VideoView dentro de un ScrollView
- Smooth Scroll para GridView
- Android: ¿Cómo puedo desactivar el desplazamiento de CalendarView
- Androide. Desplazamiento de 2 vistas de lista
- Lista colgadaElector en ListView
- ¿Hay alguna manera de saber cuántos elementos están mostrando en una vista de lista?
- Desplazamiento horizontal múltiple de RecyclerView
- Cómo desplazarse mediante programación WebView de Android
- ¿Cómo obtener el ListView con desplazamiento de carrusel en Android?
- El desplazamiento suave no funciona en ViewPager (biblioteca de soporte)
- Detectar cuando RecyclerView alcanza la posición más baja durante el desplazamiento
- La vista web de Android no tratará los eventos correctamente cuando el iframe esté presente
Tengo el método simple de la escritura para parar Scoll ListView usando la reflexión.
private void stopScroll(AbsListView view) { try { Field field = android.widget.AbsListView.class.getDeclaredField("mFlingRunnable"); field.setAccessible(true); Object flingRunnable = field.get(view); if (flingRunnable != null) { Method method = Class.forName("android.widget.AbsListView$FlingRunnable").getDeclaredMethod("endFling"); method.setAccessible(true); method.invoke(flingRunnable); } } catch (Exception e) {} }
Sólo tienes que llamar a stopScroll (myListView); Cuando necesite detener el desplazamiento.
// Stop scrolling smoothScrollBy(0, 0);
Internamente esto llamará al método que @Nik intenta reflejar.
Utilizar
listView.smoothScrollBy(0, 0); // to stop the scrolling. // followed by listView.setSelection(position) // to move to the specific position.
Tiene un método de desplazamiento manual que puede llamar a listview.scrollTo (int, int); Pero no tengo idea de cómo se puede calcular cuánto desplazarse, quiero decir cómo calcular los argumentos del método. También esto no deja de desplazarse sólo posiciones que en un lugar específico y, a continuación, dejar de desplazamiento, por lo que podría tener un poco de parpadeo … Si no te resuelve el problema en la lista le dará algunas pistas.
Más sobre el método
Intento llamar ListView.smoothScrollToPosition(int position)
para desplazarse de nuevo a la posición correcta. Como todas las cosas gui se hace en un hilo creo que hay pocas posibilidades de realmente detener el desplazamiento en la prensa de botones, por lo que el más fácil sería desplazamiento hacia atrás (que podría incluso ser un efecto gui agradable).
¿Intentaste listView.clearAnimation()
? podría funcionar
- ¿Puede la androide JVM ejecutarse en una PC también?
- Fb: // profile / {userid} parece no estar funcionando