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以降で使用したときに発生するクラッシュを修正しました。 ViewPager2で、RecyclerView1.2.0-alpha02以降でデフォルトで入力されなくなったCollectionInfoとCollectionItemInfoが正しく入力されるようになりました。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のユーザーは、少なくともRecyclerView1.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 をアップグレードしました。(Id6471、b/165307851、b/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 がデフォルトで提供しなくなった CollectionInfo と CollectionItemInfo にデータが入力されます。RecyclerView 1.2.0-alpha02 に更新する場合は、ユーザー補助の低下を防ぐために ViewPager2 も更新します。
新機能
FragmentStateAdapter内で発生するフラグメント ライフサイクルの変更をリッスンするためのFragmentTransactionCallbackインターフェースを追加しました。(Ibda77)
バグの修正
FragmentManagerにフラグメントを追加するときに、初期フラグメント メニューが表示されるFragmentStateAdapterの問題を修正しました。(I9d2ff、b/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/138044582、bb/139432498) ItemDecorationインスタンスの問題の修正と、オーバースクロール インジケーターの配置の回避策(b/139012032)- 他のコンポーネントでいくつかの問題を修正して、
ViewPager2での動作を改善しました(RecyclerView、NestedScrollView、Navigation)。
バージョン 1.0.0-beta03
2019 年 8 月 7 日
androidx.viewpager2:viewpager2:1.0.0-beta03 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。
バグの修正
- 過渡的な
Fragmentの状態に関するFragmentStateAdapterの問題の修正。b/134246546 - スムーズ スクロール中にデータセットが変更された場合の
currentItemとscrollStateの問題の修正(エッジケースに対処)。b/137642608 PageTransformer(MarginPageTransformerを含む)アニメーションがデータセット変更アニメーションと競合する問題の修正。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_RIGHT、ACTION_PAGE_DOWNなど
API の変更
FragmentStateAdapter: 非メインアイテムのFragmentがSTARTEDまでに制限され、menuVisibilityは false に設定されます。PageTransformer、MarginPageTransformer、CompositePageTransformer:positionのドキュメントを修正しました。
バグの修正
- データセット変更 / アダプター変更後の
currentItemを修正しました。 MarginPageTransformerのoffscreenPageLimitに関する問題を修正しました。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の一部ではなくなりました。FragmentStateAdapterのsaveStateメソッドとrestoreStateメソッドが final になりました。ViewPager2.OrientationとViewPager2.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 の完全なリストについては、こちらをご覧ください。
新機能
- ユーザー入力を無効にする機能(
setUserInputEnabled、isUserInputEnabled)
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になります。registerOnPageChangeCallbackをaddPageChangeListenerに置き換え
既知の問題
- clipToPadding
- fakeDrag がない
- JavaDoc
- 画面の向きに平行なネストされたスクロール
- 画面外制限の制御がない
- TabLayout の統合を改善する必要がある
- pageWidth セッターがない(強制的に 100% / 100%)
- ページ トランスフォーマー: ハードウェア / ソフトウェア レイヤーの選択がない、描画の逆順がない
- 現在のアイテムの前にページを挿入すると現在のアイテムが表示したままになる
- キーボード ナビゲーションに手直しが必要
FragmentStateAdapterの安定性 / パフォーマンスを改善予定