android - not - scroll recyclerview
vista scrollview+recycler anidada, comportamiento extraño de autoscroll (3)
Como dijo Harshit en Android, evitar que la vista recicladora anidada se recoloque automáticamente
puede agregar este atributo a su diseño lineal. El diseño directo de Linear de su scrollView.
android:descendantFocusability="blocksDescendants"
Me ayudó.
En un buscador de vistas tengo varios fragmentos, uno de ellos usa una vista de desplazamiento anidada con un encabezado y una vista de reciclador:
<android.support.v4.widget.NestedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/scrollview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.m360.android.fragment.Members.MemberDetailsFragment">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="20dp">
<header/>
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:paddingTop="0dp" />
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
La etiqueta "encabezado" representa un diseño complejo que no quería publicar aquí ya que alarga mucho el código.
cuando cambio entre las pestañas, se desplaza hacia la vista del reciclador. El encabezado está oculto, tengo que desplazarme hacia arriba para verlo.
¿Alguna idea sobre qué causa eso? No quiero usar un tipo en mi adaptador si puedo evitarlo.
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 .
setFocusableInTouchMode=true
para el diseño hijo (puede ser LinearLayout
) de NestedScrollView