スワイプでの更新をアプリへ追加する

スワイプでの更新のユーザー インターフェース パターンは、 SwipeRefreshLayout ウィジェットが縦スワイプを検出して特徴的な進行状況バーを表示し、コールバックをトリガーします。 使用します。この動作を有効にするには、ウィジェットを親としてレイアウト ファイルに追加します。 ListView または GridView を作成し、 ユーザーがスワイプしたときに呼び出される更新動作。

このページでは、ウィジェットを既存のレイアウトに追加する方法について説明します。また、更新を追加して アクションバーのオーバーフロー領域にアクションを追加し、スワイプ操作を使用できないユーザーが 手動で更新する必要はありません。

SayRefreshLayout の依存関係を追加する

アプリで 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 を 単一の 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。もし レイアウトに "@android:id/list" という ID の ListView が含まれ、 スワイプでの更新機能は自動的にサポートされます。ただし、明示的に宣言する これにより、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>