为应用添加滑动刷新

滑动刷新界面模式完全在 SwipeRefreshLayout 微件中实现,该微件可以检测纵向滑动,显示一个独特的进度条,并在您的应用中触发回调方法。您可以通过以下方法启用此行为:将该微件作为 ListViewGridView 的父项添加到布局文件,并实现在用户执行滑动手势时调用的刷新行为。

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

添加 SwipeRefreshLayout 微件

如需向现有应用添加滑动刷新微件,请将 SwipeRefreshLayout 添加为单个 ListViewGridView 的父级。请注意,SwipeRefreshLayout 仅支持单个 ListViewGridView 子级。

以下示例展示了如何将 SwipeRefreshLayout 微件添加到包含 ListView 的现有布局文件中:

<android.support.v4.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" />

    </android.support.v4.widget.SwipeRefreshLayout>

您也可以使用具有 ListFragmentSwipeRefreshLayout 微件。如果布局包含 ID 为 "@android:id/list"ListView,系统会自动支持滑动刷新功能。但是,以这种方式明确声明 ListView 会取代默认的 ListFragment 视图结构。如果您想使用默认视图结构,则必须替换部分 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>