tutorial studio recyclerview implement example create cardview card and android android-layout appcompat android-recyclerview android-cardview

studio - android: RecyclerView dentro de ScrollView(o paralaje)



grid layout and cardview (2)

Tengo un fragmento con 2 vistas de tarjeta con controles múltiples dentro.

debajo del segundo cardview tengo una vista recicladora , esto funciona perfecto .

el problema es que la vista del reciclador comienza muy abajo de la pantalla , y desplazarse por la vista recylcer es muy pequeña .

anteriormente utilicé una vista de lista, y esto me mantuvo en forma para su contenido y así hacer desplazarse por la pantalla de una vez, pero con recylclerview no puedo.

¿Cómo hacer cuando me desplazo en la vista recycler, los controles suben como efecto de paralaje?

EDITAR: más claro, imagine 2 vistas de tarjeta en un fragmento, estas ocupan el 80% de la pantalla, encima de estas, una vista recicladora con una lista de 100 elementos, pero el desplazamiento es tan pequeño ... la vista de lista me permite adaptarme a la " contenido "y desplazarse por toda la pantalla a la vez.

este es mi diseño XML:

<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/svScroll" android:layout_width="fill_parent" android:layout_height="fill_parent" android:fillViewport="true" > <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" > <include android:id="@+id/cvCampos1" layout="@layout/ctlcabeceralibreta" /> <include android:id="@+id/cvCampos2" layout="@layout/ctlcabeceralibreta2" /> <android.support.v7.widget.RecyclerView android:id="@+id/rvRegistros" android:layout_width="fill_parent" android:layout_height="1000dp" android:layout_below="@id/cvCampos2" android:scrollbars="vertical" /> </RelativeLayout> </ScrollView>

esta es la captura de pantalla:


poner una altura fija funciona !!! pero necesito calcular la altura de la cantidad de elementos en la lista

esto funciona para listviews (no lo probé con recyclerview)

public static void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { // pre-condition return; } int totalHeight = listView.getPaddingTop() + listView.getPaddingBottom(); for (int i = 0; i < listAdapter.getCount(); i++) { View listItem = listAdapter.getView(i, null, listView); if (listItem instanceof ViewGroup) { listItem.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); } listItem.measure(0, 0); totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); listView.setLayoutParams(params); }

Src:

Ejemplo completo


En el caso anterior, lo que debe hacer es usar varios ViewHolders en la misma vista de recyclerview .

Veo que tienes tres tipos de diseños allí. Las primeras dos cartas y otros diseños en su vista de recyclerview .

RecyclerView con múltiples tipos de vista le da un ejemplo de cómo usar múltiples tipos de vista en una simple vista de reciclador.