Horizontal RecyclerView interior vertical ScrollView

Así que tengo un RecyclerView horizontal dentro de un ScrollView vertical. Todo dentro de mi diseño se muestra bien y todo se desplaza en las direcciones que quiero y lo hace sin problemas.

El único problema que tengo es que el RecyclerView está por debajo de algún otro contenido en el ScrollView y cuando el RecyclerView es parcialmente visible, alineará la parte inferior del RecyclerView con la parte inferior de la pantalla al arrancar. Esto significa que el contenido por encima de la RecyclerView es expulsado de la pantalla.

¿Alguien sabe por qué sucede esto, y cómo puedo solucionarlo?

Aquí hay un diseño simple que hace lo que acabo de describir. Ni siquiera necesita rellenar el RecyclerView, todavía lo hará.

<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:layout_width="match_parent" android:layout_height="500dp" android:background="#fff"/> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="200dp" android:background="#000"/> </LinearLayout> </ScrollView> 

Resulta que este problema fue reportado a Google aquí Edición – 81854

De acuerdo con Google que está funcionando como se pretende. El problema es que RecyclerView tiene focusableInTouchMode establecido en true. Para solucionar el problema establecí focusableInTouchMode y focusable a true en la vista superior de ScrollView.

A continuación se muestra la corrección para el ejemplo de código proporcionado en la pregunta original:

 <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:layout_width="match_parent" android:layout_height="500dp" android:background="#fff" android:focusableInTouchMode="true" android:focusable="true"/> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="200dp" android:background="#000"/> </LinearLayout> </ScrollView> 
  • Gran número de TextViews un éxito de rendimiento? ¿Debo cambiar a ListView en lugar de usar Scrollview?
  • Desplazamiento de EditText dentro de ScrollView
  • Android - EditText multilínea forzada a llenar la altura
  • Cómo detener ScrollView desde el desplazamiento hasta la parte inferior de la página cargada actual en WebView
  • Android: TextView dentro de ScrollView: Cómo limitar la altura
  • Gestión de eventos táctiles en ScrollView Android
  • ScrollView> LinearLayout> PreferenceFragment es altura cero
  • ScrollView vs RecyclerView para niños diferentes en Android
  • No hay impulso de lanzamiento dentro de ScrollView
  • Hacer scrollbars flash de código (como iOS flashScrollIndicators)
  • Si ScrollView sólo admite a un hijo directo, ¿cómo se supone que puedo hacer que un diseño completo se pueda desplazar?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.