studio recyclerview recycler personalizado ejemplo card and android listview android-recyclerview

recyclerview - Android evita que la vista recicladora anidada se reposicione automáticamente



recyclerview personalizado (3)

Tengo un ViewPager como un elemento en un diseño lineal, con cada elemento en el buscapersonas con un RecyclerView. El problema es que cada vez que la página se carga o cuando cambio páginas en ViewPager, la vista se desplaza automáticamente, por lo que el comienzo de la vista del reciclador se encuentra en la parte superior de la pantalla, en lugar de permanecer como está.

Un .gif del problema está aquí . Tenga en cuenta que no me estoy desplazando hacia abajo, que es el reposicionamiento automático.

¿Cómo puedo evitar que la vista se reposicione automáticamente al inicio de la vista de reciclador?


Supongo que el problema no está en la vista del reciclador sino en el visor. ViewPager tiene el método setOffscreenPageLimit que solía definir la página fuera de pantalla de tu fragmento adjunto a viewpager. si tiene 3 fragmentos adjuntos en viewpager, puede establecer su parámetro como este

viePager.setOffscreenPageLimit(3);

Cada vez que cambie la página del buscapersonas, su fragmento permanecerá en el último estado.


puede agregar este atributo a su diseño lineal. El diseño directo de Linear de su scrollView.

android:descendantFocusability="blocksDescendants"


Tenemos un problema similar. Tenemos un RecyclerView vertical. Cada elemento de este RecyclerView vertical contiene un RecyclerView horizontal, como en la aplicación Android TV.

Cuando actualizamos las libs de soporte de 23.4.0 a 24.0.0, apareció automáticamente el desplazamiento automático. En particular, cuando abrimos una Activity y luego volvemos, la vertical RecyclerView desplaza hacia arriba para que la fila horizontal actual de RecyclerView no se corte y la fila se muestre por completo.

Agregar android:descendantFocusability="blocksDescendants" soluciona el problema.

Sin embargo, he encontrado otra solución , que también funciona. En nuestro caso, el RecyclerView vertical está contenido dentro de FrameLayout . Si agrego android:focusableInTouchMode="true" a este FrameLayout , el problema desaparece.

Incluso hay una tercera solución mencionada aquí , que básicamente consiste en llamar a setFocusable(false) en el secundario / RecyclerView s interno. No he intentado esto.

Por cierto, hay un problema abierto en el AOSP .