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:
- Cómo desplazarse tableview en android
- ¿Cómo puedo ajustar las interacciones con ScrollView, de modo que los usuarios no se muevan accidentalmente en la dirección equivocada?
- ¿Cómo trabajar, cuando listview dentro del scrollview?
- Android WebView dentro de ScrollView solo desplaza scrollview
- Múltiples WebViews en ScrollView dando problemas (Android)
<?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>
- Android: ¿Cómo puedo hacer elementos desplazables horizontalmente en una lista vertical?
- Crosswalk's XWalkView (una alternativa a Webview) no funciona con AppBarLayout + CoordinatorLayout
- Android ScrollView layout (wrap_content, tamaño máximo)
- Detectar cuándo scrollView se ha desplazado
- Ocultar FAB en NestedScrollView al desplazarse
- Hacer que una vista secundaria coincida con el ancho de una vista de desplazamiento principal
- Establecer contentInset en RecyclerView
- Cómo crear multiline edittext con vista de desplazamiento dentro de 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.
- No se puede capturar Java (Android) Excepción con try-catch
- Cómo cambiar el título de la pestaña dinámicamente