Шаблон пользовательского интерфейса «обновление по свайпу» полностью реализован в виджете SwipeRefreshLayout , который отслеживает вертикальный свайп, отображает характерную полосу прогресса и запускает методы обратного вызова в вашем приложении. Чтобы включить это поведение, добавьте виджет в файл разметки в качестве родительского элемента для ListView или GridView и реализуйте поведение обновления, которое вызывается при свайпе пользователя.
На этой странице показано, как добавить виджет в существующий макет. Также показано, как добавить действие обновления в область переполнения панели действий, чтобы пользователи, которые не могут использовать жест смахивания, могли запустить ручное обновление с помощью внешнего устройства.
Добавить зависимость SwipeRefreshLayout
Чтобы использовать SwipeRefreshLayout в вашем приложении, добавьте следующую зависимость в файл build.gradle :
Классный
dependencies { implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01" }
Котлин
dependencies { implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01") }
Добавьте виджет SwipeRefreshLayout
Чтобы добавить виджет обновления страницы с помощью свайпа в существующее приложение, добавьте SwipeRefreshLayout в качестве родительского элемента для одного ListView или GridView . SwipeRefreshLayout поддерживает только один дочерний элемент ListView или GridView .
В следующем примере показано, как добавить виджет SwipeRefreshLayout в существующий файл разметки, содержащий 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>
Вы также можете использовать виджет SwipeRefreshLayout с ListFragment . Если макет содержит ListView с ID "@android:id/list" , функция обновления с помощью свайпа поддерживается автоматически. Однако явное объявление ListView таким образом отменяет структуру представления ListFragment по умолчанию. Если вы хотите использовать структуру представления по умолчанию, переопределите части поведения SwipeRefreshLayout и ListFragment .
Добавьте действие обновления на панель действий.
Добавьте в панель действий вашего приложения действие обновления, чтобы пользователи, не способные выполнять жесты смахивания, могли запустить обновление вручную. Например, пользователи с особыми потребностями могут запускать действия на панели действий с помощью внешних устройств, таких как клавиатура и D-pad.
Добавьте действие обновления в качестве пункта меню, а не кнопки, установив атрибут android:showAsAction=never . Если вы отобразите действие в виде кнопки, пользователи могут предположить, что действие обновления с помощью кнопки отличается от действия обновления с помощью свайпа. Сделав действие обновления менее заметным на панели действий, вы побудите пользователей выполнять обновления вручную с помощью жестов свайпа, сохраняя при этом доступность этой опции там, где её ищут пользователи D-pad.
Следующий код демонстрирует, как добавить действие обновления страницы с помощью свайпа в область переполнения:
<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>
