Шаблон пользовательского интерфейса «проведите пальцем для обновления» полностью реализован в виджете 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
с идентификатором "@android:id/list"
, функция пролистывания для обновления поддерживается автоматически. Однако явное объявление ListView
таким образом заменяет структуру представления ListFragment
по умолчанию. Если вы хотите использовать структуру представления по умолчанию, переопределите части поведения SwipeRefreshLayout
и ListFragment
.
Добавьте действие обновления на панель действий
Добавьте действие обновления на панель действий вашего приложения, чтобы пользователи, которые не могут выполнять жесты смахивания, могли запустить обновление вручную. Например, пользователи с потребностями в специальных возможностях могут запускать действия панели действий с помощью внешних устройств, таких как клавиатуры и крестовины.
Добавьте действие обновления в виде пункта меню, а не кнопки, установив атрибут 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>