ViewPager2

ビューまたはフラグメントをスワイプ可能な形式で表示します。
最新の更新 安定版リリース リリース候補版 ベータ版リリース アルファ版リリース
2024 年 5 月 14 日 1.1.0 - - -

AndroidX の依存関係

ViewPager2 を使用するには、プロジェクトの build.gradle ファイルに次の AndroidX 依存関係を追加します。

Groovy

dependencies {
    implementation "androidx.viewpager2:viewpager2:1.1.0"
}

Kotlin

dependencies {
    implementation("androidx.viewpager2:viewpager2:1.1.0")
}

フィードバック

お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。

新しい問題を報告する

詳細については、Issue Tracker のドキュメントをご覧ください。

バージョン 1.1.0

バージョン 1.1.0

2024 年 5 月 14 日

androidx.viewpager2:viewpager2:1.1.0 がリリースされました。バージョン 1.1.0 に含まれる commit については、こちらをご覧ください。

1.0.0 以降の重要な変更

  • RecyclerView 1.3.1-rc01 以降で使用するとクラッシュする問題を修正しました。
  • RecyclerView 1.2.0-alpha02 以降がデフォルトで設定されなくなった CollectionInfoCollectionItemInfo を、ViewPager2 が正しく入力できるようになりました。
  • FragmentStateAdapter 内で発生するフラグメントのライフサイクルの変更をリッスンするための FragmentTransactionCallback インターフェースを追加しました。
  • FragmentManager にフラグメントを追加する際のフラグメント メニューの初期表示に関する FragmentStateAdapter の問題を修正しました。
  • ウィンドウ インセットのディスパッチを修正しました。すべてのページが同じインセットを取得するようになりました。古い API バージョン(API 30 以前)で WindowInsets がディスパッチされる仕組みにより、兄弟ビューでインセットを使用できない可能性があります。API 30 未満のデバイスでインセットを適用するには、WindowInsetsApplier.install(viewPager2) を介してこの修正にオプトインする必要があります。

バージョン 1.1.0-rc01

2024 年 5 月 1 日

androidx.viewpager2:viewpager2:1.1.0-rc01 がリリースされました。1.1.0-beta02 からの主な変更はありません。バージョン 1.1.0-rc01 に含まれる commit については、こちらをご覧ください。

バージョン 1.1.0-beta02

2023 年 5 月 24 日

androidx.viewpager2:viewpager2:1.1.0-beta02 がリリースされました。バージョン 1.1.0-beta02 に含まれる commit については、こちらをご覧ください

API の変更

  • FragmentTransactionCallback へのコールバックを保存するフラグメント状態を追加しました。(I45b90
  • ViewPager2 は、古い API バージョン(30 未満)の破損した WindowInsets ディスパッチを修正しなくなりました。修正自体が ViewPager2 の兄弟に悪影響を及ぼす可能性があるためです。この修正は引き続き利用可能ですが、デベロッパーがケースバイケースで判断できるように、オプトインになりました。WindowInsetsApplier.install(viewPager2)) を呼び出して修正を有効にします。(Ic9a85

バグの修正

  • 新しいバージョンの RecyclerView との互換性の問題を修正しました。このバージョンの ViewPager2 を使用する場合は、RecyclerView 1.3.1-rc01 以降に更新する必要があります。

バージョン 1.1.0-beta01

2021 年 8 月 4 日

androidx.viewpager2:viewpager2:1.1.0-beta01 がリリースされました。バージョン 1.1.0-beta01 に含まれる commit については、こちらをご覧ください

API の変更

  • Kotlin 1.4 を使用できるように、AndroidX をアップグレードしました。(Id6471b/165307851b/165300826

  • すべての AndroidX ライブラリについて、Java 8 をターゲットにしました(2923f39

バグの修正

  • ウィンドウ インセットのディスパッチを修正しました。すべてのページで同じインセットが取得されるようになりました。(I47fef

バージョン 1.1.0-alpha01

2020 年 4 月 1 日

androidx.viewpager2:viewpager2:1.1.0-alpha01 がリリースされました。バージョン 1.1.0-alpha01 に含まれる commit については、こちらをご覧ください

このリリースでは、RecyclerView 1.2.0-alpha02 の変更に伴い、RecyclerView がデフォルトで提供しなくなった CollectionInfoCollectionItemInfo にデータが入力されます。RecyclerView 1.2.0-alpha02 に更新する場合は、ユーザー補助の低下を防ぐために ViewPager2 も更新します。

新機能

  • FragmentStateAdapter 内で発生するフラグメント ライフサイクルの変更をリッスンするための FragmentTransactionCallback インターフェースを追加しました。(Ibda77

バグの修正

  • FragmentManager にフラグメントを追加するときに、初期フラグメント メニューが表示される FragmentStateAdapter の問題を修正しました。(I9d2ffb/144442240

バージョン 1.0.0

バージョン 1.0.0

2019 年 11 月 20 日

androidx.viewpager2:viewpager2:1.0.0 がリリースされました。1.0.0-rc01 からの変更はありません。バージョン 1.0.0 に含まれる commit については、こちらをご覧ください

1.0.0 の主な機能

  • 以前の ViewPager 実装からの改善:
    • RTL(右から左)レイアウトのサポート
    • 縦向きのサポート
    • 信頼できる Fragment サポート(基盤となる Fragment コレクションに対する変更の処理など)
    • データセットの変更アニメーション(DiffUtil サポートなど)
  • 以前の ViewPager 実装から簡単に移行可能(可能な場合は API パリティ)。詳しくは、移行ガイドサンプルアプリをご覧ください。

ViewPager2 を使用してフラグメント間をスライドさせるには、ガイドをご覧ください。

バージョン 1.0.0-rc01

2019 年 10 月 23 日

androidx.viewpager2:viewpager2:1.0.0-rc01 がリリースされました。1.0.0-beta05 からの変更はありません。バージョン 1.0.0-rc01 に含まれる commit については、こちらをご覧ください

バージョン 1.0.0-beta05

2019 年 10 月 9 日

androidx.viewpager2:viewpager2:1.0.0-beta05 がリリースされました。バージョン 1.0.0-beta05 に含まれる commit については、こちらをご覧ください

バグの修正

  • 画面外ページへの requestFocus でページ変更が発生する問題を修正しました。これで、元の ViewPager と同じ動作になりました。(b/140656866
  • ページ変更後、画面外のページに focus が残る問題を修正しました。ページを変更するとフォーカスがクリアされるようになりました。(b/140656866
  • ページを変更するときの Fragment の一時停止 / 再開トランザクションの順序を修正しました(新しいアイテムを再開する前に、常に古いプライマリ アイテムを一時停止させるようになりました)。(b/139489059
  • canScrollHorizontally(int)canScrollVertically(int) を修正し、ViewPager2 が指定された方向にスクロールできるかどうかを返すようになりました。(b/141848404
  • swipeRefreshLayout の問題を修正して、ViewPager2 での動作を改善しました。

バージョン 1.0.0-beta04

2019 年 9 月 5 日

androidx.viewpager2:viewpager2:1.0.0-beta04 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

バグの修正

  • Fragment バックスタックでの FragmentStateAdapter エッジケースの問題を修正しました。(b/139095195
  • 特定の属性構成で入力時 / フォーカス時にスクロールやページ ジャンプが発生する EditText を修正しました。(b/138044582b/139432498
  • ItemDecoration インスタンスに関する問題を修正し、オーバースクロール インジケーターの配置の回避策を追加しました。(b/139012032
  • 他のコンポーネントでいくつかの問題を修正して、ViewPager2 での動作を改善しました(RecyclerViewNestedScrollViewNavigation)。

バージョン 1.0.0-beta03

2019 年 8 月 7 日

androidx.viewpager2:viewpager2:1.0.0-beta03 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

バグの修正

  • 過渡的な Fragment の状態に関する FragmentStateAdapter の問題の修正。b/134246546
  • スムーズ スクロール中にデータセットが変更された場合の currentItemscrollState の問題の修正(エッジケースに対処)。b/137642608
  • PageTransformerMarginPageTransformer を含む)アニメーションがデータセット変更アニメーションと競合する問題の修正。b/134658996
  • 大きなデータセットでのスムーズ スクロール アニメーションの修正(float 整数値の制限)。b/134858960

バージョン 1.0.0-beta02

2019 年 7 月 19 日

androidx.viewpager2:viewpager2:1.0.0-beta02 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

バグの修正

  • 1.0.0-beta01 で導入された意図しない JaCoCo 依存関係を削除しました(b/137782951

バージョン 1.0.0-beta01

2019 年 7 月 17 日

androidx.viewpager2:viewpager2:1.0.0-beta01 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

バグの修正

  • データセットのスクロールと更新の際に ViewPager2.updateCurrentItem がクラッシュする問題の修正
  • ViewPager2.isLayoutRtl に関連して NullPointerException がクラッシュする問題の修正
  • TOUCH_SLOP_PAGING がデフォルトのタッチスロップになりました。
  • 空のアダプターについての OnPageChangeCallback イベントの修正(ViewPager1 と同等の場合、-1 ではなく 0 ページ)

既知の問題

バージョン 1.0.0-alpha06

2019 年 7 月 2 日

androidx.viewpager2:viewpager2:1.0.0-alpha06 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

これは、API を凍結してベータ版に移行する前に計画していた最後のアルファ版です。API のフィードバックをお寄せください。

新機能

  • ユーザー補助機能を改善するための基礎: ACTION_PAGE_RIGHTACTION_PAGE_DOWN など

API の変更

  • FragmentStateAdapter: 非メインアイテムの FragmentSTARTED までに制限され、menuVisibility は false に設定されます。
  • PageTransformerMarginPageTransformerCompositePageTransformer: position のドキュメントを修正しました。

バグの修正

  • データセット変更 / アダプター変更後の currentItem を修正しました。
  • MarginPageTransformeroffscreenPageLimit に関する問題を修正しました。
  • FakeDrag 動作中のユーザー補助アクションを修正しました。

バージョン 1.0.0-alpha05

2019 年 6 月 5 日

androidx.viewpager2:viewpager2:1.0.0-alpha05 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

新機能

  • ItemDecorator が導入されました。動作は RecyclerView と一致しています。
  • MarginPageTransformer が、ページ間のスペース(ページ インセットの外側)作成機能を提供する目的で導入されました。
  • CompositePageTransformer が、複数の PageTransformer を組み合わせる機能を提供する目的で導入されました。

API の変更

  • FragmentStateAdapter#getItem メソッドの名前を FragmentStateAdapter#createFragment に変更しました。以前のメソッド名はバグの原因となっていたことが過去に判明しています。
  • OFFSCREEN_PAGE_LIMIT_DEFAULT 値を 0 から -1 に変更しました。OFFSCREEN_PAGE_LIMIT_DEFAULT 定数を使用している場合、クライアント コードを変更する必要はありません。

バグの修正

  • SCROLL_STATE_SETTLING が反対方向へのドラッグによって中断された場合の getCurrentItem() の動作を修正しました。
  • 「アクティビティを保持しない」のコンテキストで FragmentStateAdapter クラスローダーの問題に対処しました。
  • setOffscreenPageLimit のドキュメントが改善されました。

バージョン 1.0.0-alpha04

2019 年 5 月 7 日

androidx.viewpager2:viewpager2:1.0.0-alpha04 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

新機能

  • offscreenPageLimit: ビュー階層に保持されるページ View / Fragment の数を厳密に管理できます。

API の変更

  • orientation 属性と isUserScrollable 属性が SavedState の一部ではなくなりました。
  • FragmentStateAdaptersaveState メソッドと restoreState メソッドが final になりました。
  • ViewPager2.OrientationViewPager2.ScrollState のアノテーションが public でなくなりました。

バグの修正

  • SavedState: Activity が破棄 / 再作成されたときに復元する問題を修正しました。
  • SavedState: アダプターが設定されるまで復元を遅らせました。
  • OnPageChangeCallback: 軽微なエッジケースを修正しました。

バージョン 1.0.0-alpha03

2019 年 4 月 3 日

androidx.viewpager2:viewpager2:1.0.0-alpha03 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

新機能

  • ViewPager2 をプログラムでスクロールする機能: fakeDragBy(offsetPx)

API の変更

  • FragmentStateAdapter には Lifecycle オブジェクトが必要になりました。ホスト FragmentActivity またはホスト Fragment から取得するためにユーティリティ コンストラクタを 2 つ追加しました。

バグの修正

  • 多数の Fragment サポートの修正:
    • 最小化中または画面の回転中のデータセット更新の処理
    • 回転後の無関係なフラグメントの削除
    • 削除済みアイテムの保存された状態の削除
  • PageChangeCallback: マージンのあるページのページ オフセット計算を修正しました。

バージョン 1.0.0-alpha02

2019 年 3 月 13 日

androidx.viewpager2:viewpager2:1.0.0-alpha02 がリリースされました。このバージョンに含まれる commit の完全なリストについては、こちらをご覧ください。

新機能

  • ユーザー入力を無効にする機能(setUserInputEnabledisUserInputEnabled

API の変更

  • ViewPager2 クラス final

バグの修正

  • FragmentStateAdapter の安定性の修正

バージョン 1.0.0-alpha01

2019 年 2 月 7 日

androidx.viewpager2:viewpager2 1.0.0-alpha01 がリリースされました。これは ViewPager2 の最初のリリースです。

新機能

  • 前身である android.support.v4.view.ViewPager(VP1)との比較:
    • 右から左(RTL)レイアウトのサポート
    • 縦向きのサポート
    • notifyDataSetChanged が完全に機能(VP1 のバグに対処)

API の変更

  • FragmentStateAdapter に代わり FragmentStatePagerAdapter になります。
  • RecyclerView.Adapter に代わり PagerAdapter になります。
  • registerOnPageChangeCallbackaddPageChangeListener に置き換え

既知の問題

  • clipToPadding
  • fakeDrag がない
  • JavaDoc
  • 画面の向きに平行なネストされたスクロール
  • 画面外制限の制御がない
  • TabLayout の統合を改善する必要がある
  • pageWidth セッターがない(強制的に 100% / 100%)
  • ページ トランスフォーマー: ハードウェア / ソフトウェア レイヤーの選択がない、描画の逆順がない
  • 現在のアイテムの前にページを挿入すると現在のアイテムが表示したままになる
  • キーボード ナビゲーションに手直しが必要
  • FragmentStateAdapter の安定性 / パフォーマンスを改善予定