ViewPager2

以滑動式格式顯示檢視畫面或片段。
最近更新時間 穩定版 發布候選版 測試版 Alpha版
2021年8月4日 1.0.0 - 1.1.0-beta01 -

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-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-alpha01已釋出。1.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導入項目改善項目:
    • 支援RTL(由右至左)版面配置
    • 支援垂直方向
    • 值得信賴的Fragment支援(包括處理基礎Fragment集合的變更)
    • 資料集變更動畫(包含DiffUtil支援)
  • 輕鬆從先前的ViewPager實作遷移(盡可能使用API對等點)。請參閱遷移指南範例應用程式

請參閱指南,瞭解如何使用ViewPager2在片段之間移動。

1.0.0-rc01版本

2019年10月23日

androidx.viewpager2:viewpager2:1.0.0-rc011.0.0-beta05起沒有變更。1.0.0-rc01版包含這些修訂版本

1.0.0-beta05版本

2019年10月9日

androidx.viewpager2:viewpager2:1.0.0-beta05已釋出。1.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/138044582,b/139432498)
  • 修正ItemDecoration執行個體的問題,以及過度捲動指標位置的解決方法。(b/139012032)
  • 修正了其他元件中的許多問題,可與ViewPager2搭配使用,例如:RecyclerViewNestedScrollView導覽

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已設為否。
  • PageTransformerMarginPageTransformerCompositePageTransformerposition已修正說明文件。

修正錯誤

  • 修正資料集變更/轉接程式變更後的「currentItem」。
  • MarginPageTransformeroffscreenPageLimit問題已修復。
  • 已修正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已釋出。這個版本包含的修訂版本,請按這裡

新功能

  • 能夠以程式捲動ViewPager2fakeDragBy(offsetPx)

API變更

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

修正錯誤

  • 許多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
  • 沒有fakeDrag
  • JavaDoc
  • 與方向平行的巢狀結構捲動
  • 沒有裝置使用時間限制
  • 需要更完善的TabLayout整合功能
  • 未指pageWidth設定 (強制 100%/100%)
  • 頁面轉換器:不提供硬體/軟體圖層;無反向繪圖順序
  • 在目前項目之前插入頁面時保持目前項可見
  • 需要鍵盤導航
  • 即將推出FragmentStateAdapter穩定性/效能改善