ViewPager2

以可滑動格式顯示檢視畫面或片段。
最近更新時間 穩定版 候選版 Beta 版 Alpha 版
2023 年 5 月 24 日 1.0.0 - 1.1.0-beta02 -

AndroidX 依附元件

如要使用 ViewPager2,請將下列 AndroidX 依附元件新增至專案的 build.gradle 檔案:

Groovy

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

Kotlin

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

意見回饋

您的意見可協助我們改善 Jetpack。如果您發現新問題,或是有改進這個程式庫的建議,請告訴我們。回報新問題前,請先查看這個程式庫的現有問題。只要按一下星號按鈕,即可投票給現有的問題。

建立新問題

詳情請參閱 Issue Tracker 說明文件

1.1.0 版本

1.1.0-beta02 版本

2023 年 5 月 24 日

發布 androidx.viewpager2:viewpager2:1.1.0-beta02查看 1.1.0-beta02 版的修訂項

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 版的修訂項

API 變更

修正錯誤

  • 已修正分派視窗插邊,所有頁面現在都會取得相同的插邊。(I47fef)。

1.1.0-alpha01 版

2020 年 4 月 1 日

發布 androidx.viewpager2:viewpager2:1.1.0-alpha011.1.0-alpha01 版包含此連結所列的修訂項目。

這個版本會填入 RecyclerView 1.2.0-alpha02 中的變更,方法是填入 RecyclerView 預設不再提供的 CollectionInfoCollectionItemInfo。更新至 RecyclerView 1.2.0-alpha02 時,也會一併更新 ViewPager2,以免無障礙功能迴歸。

新功能

  • 新增 FragmentTransactionCallback 介面,用於監聽 FragmentStateAdapter 中發生的片段生命週期變更。(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 版本包含這些修訂版本

1.0.0 的主要功能

  • 先前的 ViewPager 導入項目改善項目:
    • 支援由右至左的版面配置
    • 支援垂直方向
    • 可靠的 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 版包含此連結所列的修訂項目

1.0.0-beta05 版

2019 年 10 月 9 日

發布了 androidx.viewpager2:viewpager2:1.0.0-beta051.0.0-beta05 版包含此連結所列的修訂項目

修正錯誤

  • 修正造成畫面外網頁的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。您可以前往這裡查看這個版本包含的修訂項目。

修正錯誤

  • 修正 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。您可以前往這裡查看這個版本包含的修訂項目。

修正錯誤

  • 修正暫時性 Fragment 狀態的 FragmentStateAdapter 問題。b/134246546
  • 修正在順暢捲動 (已解決邊緣案例) 期間變更資料集時發生的 currentItemscrollState 問題。b/137642608
  • 修正 PageTransformer (包括 MarginPageTransformer) 動畫與資料集變更動畫衝突的問題。b/134658996
  • 修正大型資料集中的流暢捲動動畫 (限制為 float 整數值)。b/134858960

1.0.0-beta02 版

2019 年 7 月 19 日

發布 androidx.viewpager2:viewpager2:1.0.0-beta02。您可以前往這裡查看這個版本包含的修訂項目。

修正錯誤

  • 移除 1.0.0-beta01 中意外引入的 jacoco 依附元件。(b/137782951)。

1.0.0-beta01 版本

2019 年 7 月 17 日

發布 androidx.viewpager2:viewpager2:1.0.0-beta01。您可以前往這裡查看這個版本包含的修訂項目。

修正錯誤

  • 修正捲動及更新資料集時發生 ViewPager2.updateCurrentItem 當機的問題
  • 修正與「ViewPager2.isLayoutRtl」相關的 NullPointerException 項當機問題
  • TOUCH_SLOP_PAGING現在是預設的觸控滑桿
  • 修正空白轉接器的 OnPageChangeCallback 事件 (網頁 0 而非 -1,以便與 ViewPager1 保持一致)

已知問題

1.0.0-alpha06 版

2019 年 7 月 2 日

發布 androidx.viewpager2:viewpager2:1.0.0-alpha06。您可以前往這裡查看這個版本包含的修訂項目。

這是我們在凍結 API 並移至 Beta 版之前計劃的最後一個 Alpha 版,請提供 API 意見回饋。

新功能

  • 更完善的無障礙設計:ACTION_PAGE_RIGHTACTION_PAGE_DOWN

API 相關異動

  • FragmentStateAdapter:非主要項目 Fragment 的上限為 STARTED,且 menuVisibility 設為 False。
  • PageTransformerMarginPageTransformerCompositePageTransformerposition已修正的說明文件。

修正錯誤

  • 修正資料集變更 / 轉接程式變更後的currentItem
  • MarginPageTransformer」和「offscreenPageLimit」問題已修正。
  • 修正 FakeDrag 行為中的無障礙功能動作。

1.0.0-alpha05 版

2019 年 6 月 5 日

發布了 androidx.viewpager2:viewpager2:1.0.0-alpha05。您可以前往這裡查看這個版本包含的修訂項目。

新功能

  • 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。您可以前往這裡查看這個版本包含的修訂項目。

新功能

  • offscreenPageLimit:用於嚴格控管檢視區塊階層中 View / Fragment 的頁面數量

API 相關異動

  • orientationisUserScrollable 屬性不再是 SavedState 的一部分
  • saveStaterestoreState 方法最後在 FragmentStateAdapter 中完成
  • 已將 ViewPager2.OrientationViewPager2.ScrollState 註解設為不公開

修正錯誤

  • SavedState:修正 Activity 在刪除 / 重新建立資料後還原的問題
  • SavedState:延遲還原到轉接器設定為止
  • OnPageChangeCallback:修正小邊緣案例

1.0.0-alpha03 版本

2019 年 4 月 3 日

androidx.viewpager2:viewpager2:1.0.0-alpha03 發布。您可以前往這裡查看這個版本包含的修訂項目。

新功能

  • 能夠以程式輔助方式捲動 ViewPager2:fakeDragBy(offsetPx)

API 相關異動

  • FragmentStateAdapter 現在需要 Lifecycle 物件。新增了兩個公用程式建構函式,可從主機 FragmentActivity 或主機 Fragment 取得該建構函式。

修正錯誤

  • 許多 Fragment 支援修正問題:
    • 在最小化或畫面旋轉期間處理資料集更新;
    • 旋轉後移除不相關的片段;
    • 已移除已移除項目的已儲存狀態。
  • PageChangeCallback:修正含有邊界的網頁偏移值計算。

1.0.0-alpha02 版

2019 年 3 月 13 日

發布了 androidx.viewpager2:viewpager2:1.0.0-alpha02。您可以前往這裡查看這個版本的修訂項目完整清單。

新功能

  • 停用使用者輸入功能 (setUserInputEnabledisUserInputEnabled)

API 相關異動

  • ViewPager2 類別最終

修正錯誤

  • 修正 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
  • 無 FranceDrag
  • JavaDoc
  • 與方向平行的巢狀捲動
  • 沒有螢幕外限制控制
  • 需要更妥善整合 TabLayout
  • 無 pageWidth setter (強制執行 100%/100%)
  • 頁面轉換器:不提供硬體/軟體層;無反向繪圖順序
  • 在目前項目之前插入頁面時保持目前項目可見
  • 鍵盤瀏覽功能需要運作
  • 即將推出FragmentStateAdapter穩定性 / 效能改善項目