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

Wypróbuj metodę Compose
Jetpack Compose to zalecany zestaw narzędzi interfejsu na Androida. Dowiedz się, jak odświeżać przez przeciągnięcie w Compose.

Wzorzec interfejsu użytkownika „przesuń, aby odświeżyć” jest w całości zaimplementowany w SwipeRefreshLayout widżecie, który wykrywa pionowe przesunięcie, wyświetla charakterystyczny pasek postępu i wywołuje w aplikacji metody wywołania zwrotnego. Aby włączyć to działanie, dodaj widżet do pliku układu jako element nadrzędny elementu ListView lub GridView i zaimplementuj działanie odświeżania, które jest wywoływane, gdy użytkownik przesunie palcem.

Na tej stronie dowiesz się, jak dodać widżet do istniejącego układu. Pokazuje też, jak dodać działanie odświeżania do obszaru przepełnienia paska działań, aby użytkownicy, którzy nie mogą używać gestu przesuwania, mogli wywołać ręczną aktualizację za pomocą urządzenia zewnętrznego.

Dodawanie zależności SwipeRefreshLayout

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

Dynamiczny

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 przeciągnięcie do istniejącej aplikacji, dodaj SwipeRefreshLayout jako element nadrzędny pojedynczego elementu ListView lub GridView. Element SwipeRefreshLayout obsługuje tylko 1 element podrzędny ListView lub GridView.

Ten przykład pokazuje, jak dodać widżet SwipeRefreshLayout do istniejącego pliku układu zawierającego element 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 SwipeRefreshLayoutListFragment. Jeśli układ zawiera element ListView z identyfikatorem "@android:id/list", funkcja odświeżania przez przesunięcie jest obsługiwana automatycznie. Jednak jawne zadeklarowanie ListView w ten sposób zastępuje domyślną strukturę widoku ListFragment. Jeśli chcesz użyć domyślnej struktury widoku, zastąp części zachowania SwipeRefreshLayoutListFragment.

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

Dodaj do paska działań aplikacji działanie odświeżania, aby użytkownicy, którzy nie mogą wykonywać gestów przesuwania, mogli wywołać ręczną aktualizację. Użytkownicy z potrzebami w zakresie ułatwień dostępu mogą na przykład wywoływać działania na pasku działań za pomocą urządzeń zewnętrznych, takich jak klawiatury i pady kierunkowe.

Dodaj działanie odświeżania jako element menu, a nie jako przycisk, ustawiając atrybutandroid:showAsAction=never. Jeśli wyświetlisz działanie w postaci przycisku, użytkownicy mogą założyć, że działanie przycisku odświeżania różni się od działania odświeżania przez przesunięcie. Zmniejszenie widoczności działania odświeżania na pasku działań zachęca użytkowników do ręcznego odświeżania za pomocą gestów przesuwania, przy jednoczesnym zachowaniu dostępnej opcji, której użytkownicy klawiszy kierunkowych szukają.

Poniższy kod pokazuje, jak dodać działanie „przesuń, aby odświeżyć” do obszaru 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>