Le modèle d'interface utilisateur de balayage pour actualiser est entièrement implémenté dans le widget SwipeRefreshLayout
, qui détecte le balayage vertical, affiche une barre de progression distinctive et déclenche des méthodes de rappel dans votre application. Activez ce comportement en ajoutant le widget à votre fichier de mise en page en tant que parent d'un ListView
ou d'un GridView
, puis en implémentant le comportement d'actualisation appelé lorsque l'utilisateur balaie l'écran.
Cette page explique comment ajouter le widget à une mise en page existante. Il montre également comment ajouter une action de rafraîchissement à la zone de débordement de la barre d'action afin que les utilisateurs qui ne peuvent pas utiliser le geste de balayage puissent déclencher une mise à jour manuelle avec un appareil externe.
Ajouter la dépendance SwipeRefreshLayout
Pour utiliser SwipeRefreshLayout
dans votre application, ajoutez la dépendance suivante à votre fichier build.gradle
:
Groovy
dependencies { implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01" }
Kotlin
dependencies { implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01") }
Ajouter le widget SwipeRefreshLayout
Pour ajouter le widget de balayage pour actualiser à une application existante, ajoutez SwipeRefreshLayout
comme parent d'un seul ListView
ou GridView
.
SwipeRefreshLayout
n'accepte qu'un seul enfant ListView
ou GridView
.
L'exemple suivant montre comment ajouter le widget SwipeRefreshLayout
à un fichier de mise en page existant contenant 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>
Vous pouvez également utiliser le widget SwipeRefreshLayout
avec un ListFragment
. Si la mise en page contient un ListView
avec l'ID "@android:id/list"
, la fonctionnalité de balayage pour actualiser est automatiquement prise en charge. Toutefois, déclarer explicitement ListView
de cette manière remplace la structure d'affichage ListFragment
par défaut. Si vous souhaitez utiliser la structure de vue par défaut, remplacez certaines parties du comportement SwipeRefreshLayout
et ListFragment
.
Ajouter une action d'actualisation à la barre d'action
Ajoutez une action d'actualisation à la barre d'action de votre application afin que les utilisateurs qui ne peuvent pas effectuer de gestes de balayage puissent déclencher une mise à jour manuelle. Par exemple, les utilisateurs ayant des besoins d'accessibilité peuvent déclencher des actions de la barre d'action à l'aide d'appareils externes, tels que des claviers et des pavés directionnels.
Ajoutez l'action d'actualisation en tant qu'élément de menu, plutôt qu'en tant que bouton, en définissant l'attribut android:showAsAction=never
. Si vous affichez l'action sous forme de bouton, les utilisateurs peuvent supposer que l'action du bouton d'actualisation est différente de l'action de balayage pour actualiser. Rendre l'action d'actualisation moins visible dans la barre d'action encourage les utilisateurs à effectuer des mises à jour manuelles à l'aide de gestes de balayage, tout en conservant l'option accessible là où les utilisateurs de la croix directionnelle la recherchent.
Le code suivant montre comment ajouter l'action de balayage pour actualiser à la zone de débordement:
<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>