El patrón "deslizar para actualizar" de la interfaz de usuario se implementa completamente dentro del widget de SwipeRefreshLayout
, que detecta el deslizamiento vertical, muestra una barra de progreso distintiva y activa los métodos de llamada en tu app. Para habilitar este comportamiento, agrega el widget a tu archivo de diseño como elemento superior de la ListView
o GridView
y, luego, implementa el comportamiento de actualización que se invoca cuando el usuario desliza el dedo.
En esta lección, se muestra cómo agregar el widget a un diseño existente. Además, se muestra cómo agregar una acción de actualizar en el área de ampliada de la barra de acciones, de manera que los usuarios que no pueden usar el gesto de deslizar con el dedo puedan activar una actualización manualmente con un dispositivo externo.
Cómo agregar el widget de SwipeRefreshLayout
A fin de agregar el widget de deslizar el dedo para actualizar en una app existente, incluye SwipeRefreshLayout
como elemento superior de una ListView
o GridView
única. Recuerda que el SwipeRefreshLayout
solo admite una única ListView
o GridView
secundaria.
En el siguiente ejemplo, se muestra cómo agregar el widget de SwipeRefreshLayout
a un archivo de diseño existente que contiene una ListView
:
<android.support.v4.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" /> </android.support.v4.widget.SwipeRefreshLayout>
También puedes usar el widget de SwipeRefreshLayout
con un ListFragment
. Si el diseño contiene una ListView
con el ID "@android:id/list"
, la funcionalidad "deslizar para actualizar" se admitirá automáticamente. Sin embargo, si declaras explícitamente la ListView
de esta manera, se sustituirá la estructura de vistas de ListFragment
predeterminada. Si quieres usar la estructura de vistas predeterminada, tendrás que anular partes del comportamiento de SwipeRefreshLayout
y ListFragment
.
Cómo agregar una acción de actualizar en la barra de acciones
Deberías agregar una acción de actualizar a la barra de acciones de tu app a fin de garantizar que los usuarios que no pueden realizar el gesto de deslizar igualmente 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 o pads direccionales.
Deberías agregar una 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 botón, los usuarios podrían asumir que la acción del botón para actualizar es diferente de la acción "deslizar para actualizar". Al hacer que la acción de actualizar sea menos evidente en la barra de acciones, puede alentar a los usuarios a que realicen actualizaciones manuales deslizando el dedo y, a su vez, dejar un acceso a la opción en un lugar en el que los usuarios de un pad direccional la buscarían.
En el siguiente código, se muestra cómo agregar la acción de deslizar para actualizar en el á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>