Dodaj do aplikacji funkcję odświeżania przez przesuwanie palcem

W przypadku wzorca interfejsu użytkownika polegającego na przeciągnięciu w celu odświeżenia implementacja jest całkowicie zawarta w widgetzie SwipeRefreshLayout, który wykrywa przesunięcie w kierunku pionowym, wyświetla pasek postępu i wywołuje metody wywołania zwrotnego w aplikacji. Aby włączyć to zachowanie, dodaj widget do pliku układu jako element nadrzędny elementu ListView lub GridView i wdróż zachowanie odświeżania, które jest wywoływane, gdy użytkownik przesunie palcem.

Na tej stronie znajdziesz instrukcje dodawania widżetu do dotychczasowego układu. Pokazuje też, jak dodać polecenie odświeżania do obszaru przepełnienia paska czynności, aby użytkownicy, którzy nie mogą użyć gestu przesunięcia, mogli ręcznie zaktualizować aplikację za pomocą urządzenia zewnętrznego.

Dodaj zależność SwipeRefreshLayout

Aby używać SwipeRefreshLayout w aplikacji, dodaj do pliku build.gradle tę zależność:

Groovy

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

Kotlin

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

Dodawanie widżetu SwipeRefreshLayout

Aby dodać widżet odświeżania przez przesunięcie do istniejącej aplikacji, dodaj SwipeRefreshLayout jako element nadrzędny pojedynczego elementu ListView lub GridView. Element SwipeRefreshLayout obsługuje tylko jeden element podrzędny typu ListView lub GridView.

Z tego przykładu dowiesz się, jak dodać widżet SwipeRefreshLayout do dotychczasowego pliku układu zawierającego widżet 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>

Możesz też użyć widżetu SwipeRefreshLayout z usługą ListFragment. Jeśli układ zawiera element ListView o identyfikatorze "@android:id/list", funkcja odświeżania przez przesunięcie jest obsługiwana automatycznie. Jednak jawne zadeklarowanie elementu ListView w ten sposób zastępuje domyślną strukturę widoku ListFragment. Jeśli chcesz użyć domyślnej struktury widoku, zastąpij części zachowania SwipeRefreshLayout i ListFragment.

Dodawanie działania odświeżania do paska działań

Dodaj do paska akcji aplikacji polecenie odświeżania, aby użytkownicy, którzy nie mogą wykonywać gestów przesuwania, mogli ręcznie zaktualizować aplikację. Na przykład użytkownicy z potrzebami w zakresie ułatwień dostępu mogą uruchamiać działania na pasku działań za pomocą urządzeń zewnętrznych, takich jak klawiatury i joysticki.

Aby dodać działanie odświeżania jako element menu, a nie jako przycisk, ustaw atrybut android:showAsAction=never. Jeśli wyświetlisz działanie jako przycisk, użytkownicy mogą pomyśleć, że działanie przycisku odświeżania jest inne niż działanie przesunięcia w dół w celu odświeżenia. Uczynienie działania odświeżania mniej widocznym na pasku czynności zachęca użytkowników do ręcznego aktualizowania za pomocą gestów przesuwania, a jednocześnie zachowuje opcję dostępną w miejscu, w którym użytkownicy szukają przycisków.

Ten kod pokazuje, jak dodać działanie przeciągania w dół, aby odświeżyć obszar przepełnienia:

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