Mantenga la posición de desplazamiento de GridView a través de la rotación de pantalla
¿Cómo puedo mantener la posición de desplazamiento de un GridView (que está lleno de resultados de búsqueda) a lo largo de una reorientación de pantalla?
Tengo el GridView dentro de un fragmento, y cuando giro la pantalla salta de nuevo a la tapa de la lista.
- Problema de Viewport en orientación normal móvil
- Android: varias preguntas de API de cámara
- Android no puede cargar la imagen orientada correcta desde la galería
- Problema de orientación de Android
- Android Quiero obtener ángulo de rotación para el dispositivo
Para hacerlo aún más complicado, en modo de paisaje mi GridView tiene 3 columnas .. en modo retrato tiene 2 columnas.
No puedo imaginar cómo mantener el GridView del fragmento desplazado a cualquier lugar cerca de donde debería ser cuando la orientación de la pantalla cambia.
- IScroll no funciona en android a menos que realice un cambio de orientación y regrese
- ¿Qué significa este Android Lint: "Orientación errónea?"
- ¿Está correctamente documentada la CameraInfo.orientation de Android? ¿Implementado incorrectamente?
- Uso del sensor de orientación para apuntar hacia una ubicación específica
- Establecer la orientación para sólo 1 fragmento en mi actividad, mientras que el resto está en el retrato
- La cámara android setDisplayOrientation (90) falla en diferentes dispositivos
- Orientación de vídeo de retrato de Android incorrecta en VideoView
- Android - desactivar el modo de paisaje?
Puede probar esto:
Inicialmente debe obtener la posición de desplazamiento actual del GridView llamando a:
int index = gridview.getFirstVisiblePosition();
Entonces usted tiene que guardar este valor mientras que la orientación cambia y cuando el GridView se crea otra vez usted tiene que mover su gridview a este índice.
Supongo que esto podría funcionar:
gridview.smoothScrollToPosition(int index)
¡Espero que esto ayude!
Puede utilizar el siguiente método, que funcionará para todas las versiones de Android.
Para guardar la posición de desplazamiento actual:
int index = gridView.getFirstVisiblePosition();
A continuación, después del cambio de orientación, utilice el código siguiente para establecer la posición gridView en el índice guardado:
gridView.setSelection(index);
Mi código//
final int index = gridView.getFirstVisiblePosition(); gridView.post(new Runnable() { @Override public void run() { gridView.setSelection(index); } });
- ¿Cómo puedo convertir un código de clave en un carácter o una cadena?
- Textura transparente en OpenGL ES para Android