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
以降がデフォルトで設定されなくなったCollectionInfo
とCollectionItemInfo
を、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 をアップグレードしました。(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、b/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
の安定性 / パフォーマンスを改善予定