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 變更
升級 Androidx 版本即可使用 Kotlin 1.4 (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 版包含此連結所列的修訂項目。
這個版本會填入 RecyclerView 1.2.0-alpha02 中的變更,方法是填入 RecyclerView
預設不再提供的 CollectionInfo
和 CollectionItemInfo
。更新至 RecyclerView 1.2.0-alpha02
時,也會一併更新 ViewPager2
,以免無障礙功能迴歸。
新功能
- 新增
FragmentTransactionCallback
介面,用於監聽FragmentStateAdapter
中發生的片段生命週期變更。(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 版本包含這些修訂版本。
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-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
搭配運作能夠更順暢:RecyclerView、NestedScrollView 和 Navigation。
1.0.0-beta03 版
2019 年 8 月 7 日
發布 androidx.viewpager2:viewpager2:1.0.0-beta03
。您可以前往這裡查看這個版本包含的修訂項目。
修正錯誤
- 修正暫時性
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
。您可以前往這裡查看這個版本包含的修訂項目。
修正錯誤
- 移除
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_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
。您可以前往這裡查看這個版本包含的修訂項目。
新功能
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 相關異動
orientation
和isUserScrollable
屬性不再是SavedState
的一部分saveState
和restoreState
方法最後在FragmentStateAdapter
中完成- 已將
ViewPager2.Orientation
和ViewPager2.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
。您可以前往這裡查看這個版本的修訂項目完整清單。
新功能
- 停用使用者輸入功能 (
setUserInputEnabled
、isUserInputEnabled
)
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
穩定性 / 效能改善項目