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>