Cómo agregar el gesto de deslizar para actualizar a tu app

El patrón "deslizar para actualizar" de la interfaz de usuario se implementa completamente dentro del widget SwipeRefreshLayout, que detecta el deslizamiento vertical, muestra una barra de progreso distintiva y activa métodos de devolución de llamada en la app. Para habilitar este comportamiento, agrega el widget a tu archivo de diseño como elemento superior de un ListView o GridView e implementa el comportamiento de actualización que se invoca cuando el usuario desliza el dedo.

En esta página, se muestra cómo agregar el widget a un diseño existente. También se muestra cómo agregar una acción de actualización al área ampliada de la barra de acciones para que los usuarios que no pueden usar el gesto de deslizar el dedo puedan activar una actualización manual con un dispositivo externo.

Cómo agregar una dependencia SwipeRefreshLayout

Para usar SwipeRefreshLayout en tu app, agrega la siguiente dependencia a tu archivo build.gradle:

Groovy

dependencies {
    implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01"
}

Kotlin

dependencies {
    implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01")
}

Cómo agregar el widget de SwipeRefreshLayout

Para agregar el widget de deslizar para actualizar a una app existente, agrega SwipeRefreshLayout como elemento superior de un solo ListView o GridView. SwipeRefreshLayout solo admite un único elemento secundario ListView o GridView.

En el siguiente ejemplo, se muestra cómo agregar el widget de SwipeRefreshLayout a un archivo de diseño existente que contiene un ListView:

<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/swiperefresh"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

También puedes usar el widget SwipeRefreshLayout con un ListFragment. Si el diseño contiene un ListView con el ID "@android:id/list", la funcionalidad de deslizar para actualizar se admitirá automáticamente. Sin embargo, declarar explícitamente ListView de esta manera reemplaza la estructura de vistas predeterminada de ListFragment. Si deseas usar la estructura de vistas predeterminada, anula partes del comportamiento de SwipeRefreshLayout y ListFragment.

Agrega una acción de actualizar a la barra de acciones

Agrega una acción de actualizar a la barra de acciones de tu app para que los usuarios que no pueden realizar gestos de deslizamiento puedan activar una actualización manual. Por ejemplo, los usuarios con necesidades de accesibilidad pueden activar acciones de la barra de acciones mediante dispositivos externos, como teclados y pads direccionales.

Agrega la acción de actualizar como elemento de menú, en lugar de como botón. Para ello, configura el atributo android:showAsAction=never. Si muestras la acción como un botón, los usuarios pueden suponer que la acción del botón para actualizar es diferente de la acción de deslizar para actualizar. Hacer que la acción de actualización sea menos visible en la barra de acciones anima a los usuarios a realizar actualizaciones manuales con gestos de deslizamiento y, al mismo tiempo, mantiene la opción accesible donde los usuarios de pad direccional la buscan.

En el siguiente código, se muestra cómo agregar la acción de deslizar para actualizar al área ampliada:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/menu_refresh"
        android:showAsAction="never"
        android:title="@string/menu_refresh"/>
</menu>