RecyclerView dentro de ScrollView / NestedScrollView no se desplaza correctamente

Tengo un diseño que tiene un CardView y un FloatingActionButton asociado con él. Hay una lista de respuestas debajo del CardView (que es un RecyclerView ). A veces, la altura de las CardViews' es mayor que la de la pantalla, así que he utilizado layout_height="wrap_content" para CardView y envuelto el LinearLayout completo dentro de ScrollView .

Sin embargo, esto causa un problema (ya que es una vista de desplazamiento dentro de un ScrollView ) mientras se desplazan los elementos de RecyclerView . Como se sugiere en algunas de las preguntas y respuestas publicadas, he utilizado tanto el NestedScrollView como el android:nestedScrollingEnabled="true" pero el desplazamiento en el RecyclerView sigue siendo malo.

Aquí está mi archivo de Layout

 <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout 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:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.forum.reply.ReplyActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v7.widget.Toolbar android:id="@+id/reply_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" android:minHeight="?attr/actionBarSize" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:titleTextColor="@android:color/white"/> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:nestedScrollingEnabled="true" android:fillViewport="true"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="8dp" android:orientation="vertical"> <android.support.v7.widget.CardView android:id="@+id/topic_card" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingBottom="@dimen/card_margin" android:paddingLeft="@dimen/card_margin" android:paddingRight="@dimen/card_margin" android:paddingTop="@dimen/card_margin"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:paddingEnd="@dimen/card_margin" android:paddingStart="@dimen/card_margin"> <android.support.v7.widget.AppCompatTextView android:id="@+id/topic_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="8dp" android:layout_marginTop="8dp" android:textAppearance="@style/TextAppearance.AppCompat.Title"/> <android.support.v7.widget.AppCompatTextView android:id="@+id/topic_content" android:layout_width="match_parent" android:layout_height="wrap_content" android:textAppearance="@style/TextAppearance.AppCompat.Body1"/> </LinearLayout> </android.support.v7.widget.CardView> <ProgressBar android:id="@+id/reply_progressbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:indeterminate="true" android:visibility="visible"/> <android.support.v7.widget.RecyclerView android:id="@+id/list_of_replies" android:layout_width="match_parent" android:layout_height="wrap_content" android:visibility="invisible"/> </LinearLayout> </ScrollView> </LinearLayout> <android.support.design.widget.FloatingActionButton android:id="@+id/reply_to_topic" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="16dp" android:clickable="true" android:src="@drawable/ic_reply_white_24dp" app:layout_anchor="@id/topic_card" app:layout_anchorGravity="bottom|right|end"/> </android.support.design.widget.CoordinatorLayout> 

Aquí están algunas imágenes –

CardView con FloatingActionButton visible

El desplazamiento de CardView a RecyclerView es suave

Desplazamiento hacia abajo no es suave

El desplazamiento hacia arriba tampoco es suave

Cuando tiene varias vistas de desplazamiento en su diseño (por ejemplo, RecyclerView + ScrollView) y cuando se desplaza en el recicladoVer, el recicladorView se desplaza con la Scrollview principal. esto provoca nervios en RecyclerView. Usted puede evitar esta fluctuación de la siguiente.

Puedes añadir
android:nestedScrollingEnabled="false" a su RecyclerView en XML o
recyclerView.setNestedScrollingEnabled(false); a su RecyclerView en Java .

si desea desplazarse por RecyclerView dentro de ScrollView y ScrollView impide desplazarse por RecyclerView (en API 16, esto ocurrió), debería usar android.support.v4.widget.NestedScrollView en lugar de ScrollView y también debe establecer nestedScrollView.setNestedScrollingEnabled (false); de esta manera puede evitar que se desplace nestedScrollView cuando se desplaza a RecyclerView. espero que esto ayude a alguien

  • ScrollView vs RecyclerView para niños diferentes en Android
  • Si ScrollView sólo admite a un hijo directo, ¿cómo se supone que puedo hacer que un diseño completo se pueda desplazar?
  • Reciclando vistas en vista de desplazamiento
  • ¿Cómo se desplaza el texto con el buscador?
  • ¿Por qué el teclado virtual muestra o no cuando se inicia una actividad?
  • Android: ¿Cómo puedo hacer elementos desplazables horizontalmente en una lista vertical?
  • ScrollView no se desplaza
  • Función de desplazamiento de listview dentro de la vista de desplazamiento
  • Android: TextView dentro de ScrollView: Cómo limitar la altura
  • Android ScrollView no se inicia en la parte superior, pero al principio del GridView
  • Android: ScrollView no se desplaza
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.