为您的应用添加下拉刷新

尝试 Compose 方式
Jetpack Compose 是推荐的 Android UI 工具包。了解如何在 Compose 中实现下拉刷新。

下拉刷新用户界面模式完全在 SwipeRefreshLayout 微件中实现,该微件可检测垂直滑动、显示独特的进度条并在您的应用中触发回调方法。通过将此微件作为 ListViewGridView 的父级添加到布局文件中,并实现用户滑动时调用的刷新行为,即可启用此行为。

本页面介绍了如何将此微件添加到现有布局中。它还介绍了如何将刷新操作添加到操作栏溢出区域,以便无法使用滑动手势的用户可以使用外部设备触发手动更新。

添加 SwipeRefreshLayout 依赖项

要在应用中使用 SwipeRefreshLayout,请将以下依赖项添加到您的 build.gradle 文件中

Groovy

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

Kotlin

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

添加 SwipeRefreshLayout 微件

要向现有应用添加下拉刷新微件,请将 SwipeRefreshLayout 作为单个 ListViewGridView 的父级添加。SwipeRefreshLayout 仅支持一个 ListViewGridView 子项。

以下示例演示了如何将 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 结合使用。如果布局包含 ID 为 "@android:id/list"ListView,则下拉刷新功能将自动受支持。但是,以这种方式明确声明 ListView 会覆盖默认的 ListFragment View 结构。如果您想使用默认的 View 结构,请覆盖部分 SwipeRefreshLayoutListFragment 行为。

将刷新操作添加到操作栏

将刷新操作添加到您的应用的操作栏,以便无法执行滑动手势的用户可以触发手动更新。例如,有辅助功能需求的用户可以使用外部设备(例如键盘和方向键)触发操作栏操作。

通过设置属性 android:showAsAction=never,将刷新操作添加为菜单项,而不是按钮。如果您将操作显示为按钮,用户可能会认为刷新按钮的操作与下拉刷新操作不同。将操作栏中的刷新操作设置得不那么显眼,可以鼓励用户使用滑动手势执行手动更新,同时为方向键用户提供他们期望的无障碍选项。

以下代码演示了如何将下拉刷新操作添加到溢出区域

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