studio recyclerview pulltorefresh personalizado hacer ejemplo como actualizar android android-recyclerview sliding

android - pulltorefresh - Deslice el RecyclerVista hacia arriba mientras lo desliza hacia arriba, o deslice el Recyclerview hacia abajo mientras lo desliza hacia abajo



swiperefreshlayout kotlin (3)

Quiero crear un Fragment con un RecyclerView que se deslice hacia arriba y muestre más elementos a medida que lo deslice hacia arriba.

Aquí hay un ejemplo de lo que estoy hablando.

Creación inicial:

El usuario desliza hacia arriba para deslizar RecyclerView arriba, muestra más elementos:

Hay algunos problemas, me gustaría no usar un CoordinatorLayout , y me gustaría configurarlo para que los elementos en RecyclerView EditText directamente sobre el EditText .

Este es el código de diseño que estoy usando:

<android.support.design.widget.CoordinatorLayout android:id="@+id/coordinatorLayout" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="visible"> <android.support.design.widget.AppBarLayout android:id="@+id/appBarLayout" android:layout_width="match_parent" android:layout_height="400dp" android:background="@android:color/transparent" android:fitsSystemWindows="true" android:orientation="vertical"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsingToolbar" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/transparent" android:fitsSystemWindows="true" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <View android:id="@+id/emptyView" android:layout_width="match_parent" android:layout_height="400dp" android:background="@android:color/transparent" app:layout_collapseMode="parallax"/> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_behavior="@string/appbar_scrolling_view_behavior"/> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <EditText android:id="@+id/editText" android:paddingLeft="16dp" android:inputType="textAutoCorrect" android:layout_centerVertical="true" android:background="@android:color/transparent" android:layout_width="match_parent" android:layout_height="56dp"/> </RelativeLayout> </RelativeLayout>

Y me sale algo como esto:

Esto definitivamente no es escalable, y la vista vacía debería ser medida constantemente.


Puede usar setReverseLayout de LinearLayoutManager

Se utiliza para invertir el orden de trazado y recorrido de elementos. Esto se comporta de manera similar al cambio de diseño para las vistas RTL. Cuando se establece en verdadero, el primer elemento se presenta al final de la interfaz de usuario, el segundo elemento se presenta antes de él, etc. Para los diseños horizontales, depende de la dirección del diseño. Cuando se establece en verdadero, si RecyclerView es LTR, entonces el diseño de RTL, si RecyclerView} es RTL, será el diseño de LTR. Si está buscando exactamente el mismo comportamiento de setStackFromBottom (boolean), use setStackFromEnd (boolean)


Utilice RecyclerView con 2 tipos de filas:

  1. Fila vacía / filas coloreadas de gris (sin divisor)
  2. Filas con contenido como ya tienes

El RecyclerView tendrá que coincidir_parente con todo el fragmento

Así obtendrá el efecto correcto de un área "en blanco" en la parte superior de RecyclerView .


TouchListener esto utilizando un TouchListener personalizado, todas las demás soluciones eran muy básicas y se limitaban a un caso de uso específico y en caja.

La forma en que lo hice fue implementar un nuevo TouchListener basado en esta biblioteca:

BounceTouchListener

Obtengo los siguientes resultados: