Aggiungi scorrimento per aggiornare alla tua app

Il pattern dell'interfaccia utente di scorrimento per l'aggiornamento viene implementato interamente all'interno del SwipeRefreshLayout widget, che rileva lo scorrimento verticale, mostra una barra di avanzamento distintiva e attiva i metodi di callback nella tua app. Attiva questo comportamento aggiungendo il widget al file di layout come elemento principale di un ListView o GridView e implementando il comportamento di aggiornamento invocato quando l'utente scorre.

Questa pagina mostra come aggiungere il widget a un layout esistente. Mostra anche come aggiungere un'azione di aggiornamento all'area di overflow dell'apposita barra in modo che gli utenti che non possono utilizzare il gesto di scorrimento possano attivare un aggiornamento manuale con un dispositivo esterno.

Aggiungi la dipendenza SwipeRefreshLayout

Per utilizzare SwipeRefreshLayout nella tua app, aggiungi la seguente dipendenza al build.gradle file:

Groovy

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

Kotlin

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

Aggiungere il widget SwipeRefreshLayout

Per aggiungere il widget di aggiornamento con scorrimento a un'app esistente, aggiungi SwipeRefreshLayout come elemento principale di un singolo ListView o GridView. SwipeRefreshLayout supporta un solo elemento figlio ListView o GridView.

L'esempio seguente mostra come aggiungere il widget SwipeRefreshLayout a un file di layout esistente contenente 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>

Puoi anche utilizzare il widget SwipeRefreshLayout con un ListFragment. Se il layout contiene un ListView con l'ID "@android:id/list", la funzionalità di scorrimento per aggiornare è supportata automaticamente. Tuttavia, dichiarando esplicitamente ListView in questo modo, la struttura della visualizzazione ListFragment predefinita viene sostituita. Se vuoi utilizzare la struttura della visualizzazione predefinita, sostituisci parti del comportamento di SwipeRefreshLayout e ListFragment.

Aggiungere un'azione di aggiornamento all'apposita barra

Aggiungi un'azione di aggiornamento alla barra delle app in modo che gli utenti che non possono eseguire gesti di scorrimento possano attivare un aggiornamento manuale. Ad esempio, gli utenti con esigenze di accessibilità possono attivare le azioni della barra delle azioni utilizzando dispositivi esterni, come tastiere e pad direzionali.

Aggiungi l'azione di aggiornamento come elemento di menu anziché come pulsante impostando l'attributo android:showAsAction=never. Se mostri l'azione come un pulsante, gli utenti potrebbero supporre che l'azione del pulsante di aggiornamento sia diversa dall'azione di scorrimento per l'aggiornamento. Rendere meno visibile l'azione di aggiornamento nella barra delle azioni incoraggia gli utenti a eseguire aggiornamenti manuali con gesti di scorrimento, mantenendo l'opzione accessibile dove gli utenti del D-pad la cercano.

Il seguente codice mostra come aggiungere l'azione di scorrimento per l'aggiornamento all'area di overflow:

<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>