Escaneando con múltiples RecyclerViews en Layout

He creado un diseño que tiene dos RecyclerViews. Uno se desplaza horizontalmente mientras que otro se desplaza verticalmente. Puedo desplazarme correctamente dentro de cada RecyclerView, pero la página en su conjunto no se desplazará, es decir, arriba. RecyclerView se mantiene en la parte superior siempre y la parte inferior se mantiene en la parte inferior como si ambos estuvieran fijos en posición.

A continuación se muestra mi diseño xml:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical"> <EditText android:id="@+id/search" android:layout_width="fill_parent" android:layout_height="50dp" android:hint="Search Dramas" android:textSize="16sp" android:paddingLeft="10dp" android:gravity="center" android:textColor="@color/dark_grey" android:textColorHint="@color/dark_grey" android:background="@drawable/border_bottom"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/border_bottom_background_black" android:textColor="@color/white" android:padding="10dp" android:text="Most Watched"/> <!-- A RecyclerView to display horizontal list --> <android.support.v7.widget.RecyclerView android:id="@+id/featured" android:scrollbars="none" android:layout_width="fill_parent" android:layout_height="240dp" android:paddingLeft="0dp" android:paddingRight="15dp" android:paddingTop="15dp" android:paddingBottom="25dp" android:background="@color/black"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/border_bottom_backgroundless" android:textColor="@color/dark_grey" android:padding="10dp" android:text="All Dramas"/> <!-- A RecyclerView to display vertical list --> <android.support.v7.widget.RecyclerView android:id="@+id/pick_item" android:scrollbars="vertical" android:layout_width="fill_parent" android:layout_height="match_parent"/> </LinearLayout> 

Cómo se ve la actividad

Pude resolver el problema poniendo todo dentro de ScrollView y ajustando la altura de RecyclerView vertical manualmente / programmatically.

 <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/scrollView"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <EditText android:id="@+id/search" android:layout_width="fill_parent" android:layout_height="50dp" android:hint="Search Dramas" android:textSize="16sp" android:paddingLeft="10dp" android:gravity="center" android:textColor="@color/dark_grey" android:textColorHint="@color/dark_grey" android:background="@drawable/border_bottom"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/border_bottom_background_black" android:textColor="@color/white" android:padding="10dp" android:text="Most Watched"/> <!-- A RecyclerView to display horizontal list --> <android.support.v7.widget.RecyclerView android:id="@+id/featured" android:scrollbars="none" android:layout_width="fill_parent" android:layout_height="240dp" android:paddingLeft="0dp" android:paddingRight="15dp" android:paddingTop="15dp" android:paddingBottom="25dp" android:background="@color/black"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/border_bottom_backgroundless" android:textColor="@color/dark_grey" android:padding="10dp" android:text="All Dramas"/> <!-- A RecyclerView to display list --> <android.support.v7.widget.RecyclerView android:id="@+id/pick_item" android:paddingBottom="20dp" android:scrollbars="vertical" android:layout_width="fill_parent" android:layout_height="match_parent" android:minHeight="840dp"/> </LinearLayout> </ScrollView> 

Configuración de la altura de RecyclerView mediante programación:

 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); // calculate height of RecyclerView based on child count params.height=1150; // set height of RecyclerView recyclerView.setLayoutParams(params); 

RecyclerView sólo ganó soporte (aún limitado) para el desplazamiento anidado en la versión 22.2.0 – mi primera sugerencia sería probar eso.

La única vista que admite totalmente el desplazamiento anidado es NestedScrollView (se puede ver al anotar que implementa NestedScrollingChild y NestedScrollingParent ) y se agregó en Support v4 version 22.1.0 (mejorado ligeramente en 22.2.0). Si solo tiene un único RecyclerView horizontal como el elemento más superior en su RecyclerView vertical, en lugar de eso, podría reemplazarlo por un NestedScrollView que contenga un LinearLayout con su RecyclerView horizontal seguido de su RecyclerView vertical.

  • ¿Cómo mostrar una imagen que es más grande que las dimensiones de la pantalla del teléfono?
  • Espacio en blanco se agrega al final cuando pongo Webview dentro de scrollview en android
  • Scrollview es extremadamente lento en ics (android 4.0) cuando contiene una larga textview
  • Cómo obtener ArrayIndex fuera de límites Excepción al agregar nuevos elementos a la lista mientras se desplaza
  • Cómo cambiar el color de la actual desplazamiento en ScrollView Android?
  • Agregue dinámicamente scrollview en diseño y lineal en scrollview
  • Android ScrollView se desplaza a la parte superior después de llamar a setVisibility (View.VISIBLE) en la vista secundaria
  • Teclado cubre la pantalla en lugar de empujar hasta el diseño?
  • Wiki sobre android-zoom-view.jar
  • Android ScrollView no se desplaza cuando el teclado está hacia arriba
  • ScrollView desplazamientos automáticos para seleccionar TextView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.