Thêm thao tác vuốt để làm mới vào ứng dụng

Thử cách dùng Compose
Jetpack Compose là bộ công cụ giao diện người dùng được khuyên dùng cho Android. Tìm hiểu cách kéo để làm mới trong Compose.

Mẫu giao diện người dùng vuốt để làm mới được triển khai hoàn toàn trong tiện ích SwipeRefreshLayout. Tiện ích này phát hiện thao tác vuốt theo chiều dọc, hiển thị một thanh tiến trình đặc biệt và kích hoạt các phương thức gọi lại trong ứng dụng của bạn. Hãy bật hành vi này bằng cách thêm tiện ích vào tệp bố cục làm phần tử mẹ của ListView hoặc GridView và triển khai hành vi làm mới được gọi khi người dùng vuốt.

Trang này cho biết cách thêm tiện ích vào một bố cục hiện có. Trang này cũng cho biết cách thêm thao tác làm mới vào khu vực tràn của thanh thao tác để những người dùng không thể dùng cử chỉ vuốt có thể kích hoạt bản cập nhật thủ công bằng một thiết bị bên ngoài.

Thêm phần phụ thuộc SwipeRefreshLayout

Để dùng SwipeRefreshLayout trong ứng dụng của bạn, hãy thêm phần phụ thuộc sau vào tệp build.gradle:

Groovy

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

Kotlin

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

Thêm tiện ích SwipeRefreshLayout

Để thêm tiện ích vuốt để làm mới vào một ứng dụng hiện có, hãy thêm SwipeRefreshLayout làm phần tử mẹ của một ListView hoặc GridView. SwipeRefreshLayout chỉ hỗ trợ một phần tử con ListView hoặc GridView.

Ví dụ sau đây minh hoạ cách thêm tiện ích SwipeRefreshLayout vào một tệp bố cục hiện có chứa 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>

Bạn cũng có thể dùng tiện ích SwipeRefreshLayout với ListFragment. Nếu bố cục chứa ListView có mã nhận dạng "@android:id/list", thì chức năng vuốt để làm mới sẽ tự động được hỗ trợ. Tuy nhiên, việc khai báo rõ ràng ListView theo cách này sẽ thay thế cấu trúc khung hiển thị ListFragment mặc định. Nếu bạn muốn dùng cấu trúc khung hiển thị mặc định, hãy ghi đè các phần của hành vi SwipeRefreshLayoutListFragment.

Thêm thao tác làm mới vào thanh thao tác

Thêm thao tác làm mới vào thanh thao tác của ứng dụng để những người dùng không thể thực hiện cử chỉ vuốt có thể kích hoạt bản cập nhật thủ công. Ví dụ: người dùng có nhu cầu hỗ trợ tiếp cận có thể kích hoạt các thao tác trên thanh thao tác bằng các thiết bị bên ngoài, chẳng hạn như bàn phím và D-pad.

Thêm thao tác làm mới dưới dạng một mục trong trình đơn, thay vì dưới dạng một nút, bằng cách đặt thuộc tính android:showAsAction=never. Nếu bạn hiển thị thao tác này dưới dạng một nút, thì người dùng có thể cho rằng thao tác nút làm mới khác với thao tác vuốt để làm mới. Việc làm cho thao tác làm mới ít nổi bật hơn trên thanh thao tác sẽ khuyến khích người dùng thực hiện bản cập nhật thủ công bằng cử chỉ vuốt trong khi vẫn duy trì lựa chọn hỗ trợ tiếp cận mà người dùng D-pad tìm kiếm.

Đoạn mã sau đây minh hoạ cách thêm thao tác vuốt để làm mới vào khu vực tràn:

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