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>