ViewPager2
| Update Terbaru | Rilis Stabil | Kandidat Rilis | Rilis Beta | Rilis Alfa |
|---|---|---|---|---|
| 14 Mei 2024 | 1.1.0 | - | - | - |
Dependensi AndroidX
Untuk menggunakan ViewPager2, tambahkan dependensi AndroidX berikut ke file
build.gradle project:
Groovy
dependencies { implementation "androidx.viewpager2:viewpager2:1.1.0" }
Kotlin
dependencies { implementation("androidx.viewpager2:viewpager2:1.1.0") }
Masukan
Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau mempunyai masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah diketahui dengan mengklik tombol bintang.
Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.
Versi 1.1.0
Versi 1.1.0
14 Mei 2024
androidx.viewpager2:viewpager2:1.1.0 dirilis. Versi 1.1.0 berisi commit ini.
Perubahan penting sejak versi 1.0.0
- Memperbaiki error saat digunakan dengan RecyclerView
1.3.1-rc01atau yang lebih tinggi. ViewPager2kini mengisiCollectionInfodanCollectionItemInfodengan benar yang tidak lagi diisi secara default oleh RecyclerView1.2.0-alpha02dan yang lebih tinggi.- Menambahkan antarmuka
FragmentTransactionCallbackuntuk memproses perubahan siklus proses fragmen yang terjadi di dalamFragmentStateAdapter. - Perbaikan masalah
FragmentStateAdapterterkait visibilitas menu fragmen awal saat menambahkan fragmen ke fileFragmentManager. - Memperbaiki pengiriman inset jendela: semua halaman kini mendapatkan inset yang sama. Karena cara
WindowInsetsdikirim pada versi API lama (< API 30) yang dapat mencegah inset tersedia untuk tampilan yang setara, Anda harus ikut serta dalam perbaikan ini melaluiWindowInsetsApplier.install(viewPager2)jika ingin menerapkan inset di perangkat < API 30.
Versi 1.1.0-rc01
1 Mei 2024
androidx.viewpager2:viewpager2:1.1.0-rc01 dirilis tanpa perubahan penting sejak versi 1.1.0-beta02. Versi 1.1.0-rc01 berisi commit ini.
Versi 1.1.0-beta02
24 Mei 2023
androidx.viewpager2:viewpager2:1.1.0-beta02 dirilis. Versi 1.1.0-beta02 berisi commit ini.
Perubahan API
- Menambahkan callback yang menyimpan status Fragment ke
FragmentTransactionCallback. (I45b90) ViewPager2kini tidak lagi mencoba memperbaiki pengirimanWindowInsetsyang rusak dari versi API lama (< 30), karena perbaikan itu sendiri dapat membahayakan saudaraViewPager2. Perbaikan masih tersedia, tetapi telah menjadi keikutsertaan sehingga developer dapat memutuskan berdasarkan kasus per kasus. Aktifkan perbaikan dengan memanggilWindowInsetsApplier.install(viewPager2)). (Ic9a85)
Perbaikan Bug
- Memperbaiki masalah kompatibilitas pada versi
RecyclerViewyang lebih baru. Pengguna versiViewPager2ini harus diupdate ke setidaknyaRecyclerView1.3.1-rc01.
Versi 1.1.0-beta01
4 Agustus 2021
androidx.viewpager2:viewpager2:1.1.0-beta01 dirilis. Versi 1.1.0-beta01 berisi commit ini.
Perubahan API
Mengupgrade androidx untuk menggunakan Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Berpindah ke penargetan Java 8 untuk semua library androidx (2923f39)
Perbaikan Bug
- Memperbaiki pengiriman inset jendela, semua halaman kini mendapatkan inset yang sama. (I47fef)
Versi 1.1.0-alpha01
1 April 2020
androidx.viewpager2:viewpager2:1.1.0-alpha01 dirilis. Versi 1.1.0-alpha01 berisi commit berikut.
Rilis ini disertai dengan perubahan pada RecyclerView 1.2.0-alpha02 dengan mengisi CollectionInfo dan CollectionItemInfo yang tidak lagi disediakan RecyclerView secara default. Saat mengupdate ke RecyclerView 1.2.0-alpha02, update juga ViewPager2 untuk mencegah regresi Aksesibilitas.
Fitur Baru
- Menambahkan antarmuka
FragmentTransactionCallbackuntuk memproses perubahan siklus proses fragmen yang terjadi di dalamFragmentStateAdapter. (Ibda77)
Perbaikan Bug
- Perbaikan masalah
FragmentStateAdapterterkait visibilitas menu fragmen awal saat menambahkan fragmen ke fileFragmentManager. (I9d2ff, b/144442240)
Versi 1.0.0
Versi 1.0.0
20 November 2019
androidx.viewpager2:viewpager2:1.0.0 dirilis tanpa perubahan dari versi 1.0.0-rc01. Versi 1.0.0 berisi commit berikut.
Fitur utama 1.0.0
- Perbaikan terhadap implementasi ViewPager sebelumnya:
- Dukungan tata letak RTL (kanan-ke-kiri)
- Dukungan orientasi vertikal
- Dukungan
Fragmentyang andal (termasuk penanganan perubahan pada kumpulanFragmentyang sudah ada) - Animasi perubahan set data (termasuk dukungan
DiffUtil)
- Migrasi yang mudah dari implementasi
ViewPagersebelumnya (API yang sama, jika memungkinkan). Lihat panduan migrasi dan aplikasi contoh.
Lihat panduan tentang penggunaan ViewPager2 untuk beralih antar-Fragment.
Versi 1.0.0-rc01
23 Oktober 2019
androidx.viewpager2:viewpager2:1.0.0-rc01 dirilis tanpa perubahan sejak 1.0.0-beta05. Versi 1.0.0-rc01 berisi commit berikut.
Versi 1.0.0-beta05
9 Oktober 2019
androidx.viewpager2:viewpager2:1.0.0-beta05 dirilis. Versi 1.0.0-beta05 berisi commit berikut.
Perbaikan bug
- Perbaikan untuk
requestFocuspada halaman di luar layar yang menyebabkan perubahan halaman. Perilaku ini kini konsisten dengan ViewPager yang asli. (b/140656866) - Perbaikan untuk
focusyang tetap ada pada halaman di luar layar setelah halaman berubah. Fokus kini dapat dihapus saat mengubah halaman. (b/140656866) - Perbaikan perintah transaksi jeda/lanjutkan
Fragmentsaat mengubah halaman (kini item utama yang lama selalu dijeda sebelum item yang baru dilanjutkan). (b/139489059) - Perbaikan untuk
canScrollHorizontally(int)dancanScrollVertically(int), yang kini akan menentukan apakah ViewPager2 dapat men-scroll ke arah yang ditentukan. (b/141848404) - Perbaikan masalah dalam SwipeRefreshLayout agar berfungsi lebih baik dengan ViewPager2.
Versi 1.0.0-beta04
5 September 2019
androidx.viewpager2:viewpager2:1.0.0-beta04 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perbaikan bug
- Perbaikan untuk masalah kasus ekstrem
FragmentStateAdapterdengan dataFragmentsebelumnya. (b/139095195) - Perbaikan untuk
EditTextdengan konfigurasi atribut tertentu yang menyebabkan scroll/halaman terlompati saat mengetik/mengarahkan fokus. (b/138044582, b/139432498) - Perbaikan untuk masalah terkait instance
ItemDecoration, dan solusi untuk penempatan indikator overscroll. (b/139012032) - Perbaikan sejumlah masalah dalam komponen lain agar berfungsi lebih baik dengan
ViewPager2: RecyclerView, NestedScrollView, dan Navigation.
Versi 1.0.0-beta03
7 Agustus 2019
androidx.viewpager2:viewpager2:1.0.0-beta03 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perbaikan bug
- Perbaikan untuk masalah
FragmentStateAdapterterkait statusFragmenttransien. b/134246546 - Perbaikan untuk masalah
currentItemdanscrollStatesaat set data diubah pada waktu scroll halus (kasus ekstrem telah ditangani). b/137642608 - Perbaikan untuk animasi
PageTransformer(termasukMarginPageTransformer) yang bermasalah dengan animasi perubahan set data. b/134658996 - Perbaikan untuk animasi scroll halus dalam set data besar (batas nilai bilangan bulat
float). b/134858960
Versi 1.0.0-beta02
19 Juli 2019
androidx.viewpager2:viewpager2:1.0.0-beta02 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perbaikan bug
- Menghapus dependensi jacoco tidak disengaja yang diperkenalkan dalam
1.0.0-beta01. (b/137782951)
Versi 1.0.0-beta01
17 Juli 2019
androidx.viewpager2:viewpager2:1.0.0-beta01 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perbaikan bug
- Perbaikan untuk error
ViewPager2.updateCurrentItemsaat men-scroll dan mengupdate set data - Perbaikan untuk error
NullPointerExceptionyang terkait denganViewPager2.isLayoutRtl TOUCH_SLOP_PAGINGsekarang menjadi slop sentuh default- Perbaikan peristiwa
OnPageChangeCallbackuntuk adaptor kosong (halaman0, bukannya-1untuk kesamaan denganViewPager1)
Masalah umum
- Kami masih berusaha mengatasi masalah yang belum terselesaikan lainnya sebelum beralih ke Stable
Versi 1.0.0-alpha06
2 Juli 2019
androidx.viewpager2:viewpager2:1.0.0-alpha06 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Ini adalah versi alfa terakhir yang sudah direncanakan sebelum pembekuan API ini dan peralihan ke beta - harap berikan masukan API.
Fitur baru
- Fondasi untuk Aksesibilitas yang lebih baik:
ACTION_PAGE_RIGHT,ACTION_PAGE_DOWN, dll.
Perubahan API
FragmentStateAdapter:Fragmentitem nonprimer dibatasi padaSTARTED, danmenuVisibility-nya ditetapkan ke false.PageTransformer,MarginPageTransformer,CompositePageTransformer: dokumentasi untukpositiontelah diperbaiki.
Perbaikan bug
- Perbaikan
currentItemsetelah perubahan set data/perubahan adaptor. - Perbaikan masalah
MarginPageTransformerdenganoffscreenPageLimit. - Perbaikan tindakan aksesibilitas saat perilaku
FakeDragsedang aktif.
Versi 1.0.0-alpha05
5 Juni 2019
androidx.viewpager2:viewpager2:1.0.0-alpha05 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Fitur baru
ItemDecoratordiperkenalkan dengan perilaku yang konsisten denganRecyclerView.MarginPageTransformerdiperkenalkan untuk memungkinkan pembuatan ruang antarhalaman (di luar inset halaman).CompositePageTransformerdiperkenalkan untuk memungkinkan penggabungan beberapaPageTransformer.
Perubahan API
- Metode
FragmentStateAdapter#getItemdiganti namanya menjadiFragmentStateAdapter#createFragment. Nama metode yang sebelumnya telah terbukti mengakibatkan bug. - Nilai
OFFSCREEN_PAGE_LIMIT_DEFAULTdiubah dari0menjadi-1. Perubahan kode klien tidak diperlukan jika konstantaOFFSCREEN_PAGE_LIMIT_DEFAULTdigunakan.
Perbaikan bug
- Pembetulan perilaku
getCurrentItem()saatSCROLL_STATE_SETTLINGterganggu oleh peristiwa tarik ke arah yang berlawanan. - Penanganan masalah loader class
FragmentStateAdapterdalam konteks "Jangan pertahankan aktivitas". - Penyempurnaan dokumentasi
setOffscreenPageLimit.
Versi 1.0.0-alpha04
7 Mei 2019
androidx.viewpager2:viewpager2:1.0.0-alpha04 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Fitur baru
offscreenPageLimit: memungkinkan kontrol yang ketat atas jumlah halaman yang dipertahankan olehView/Fragmentdalam hierarki tampilan
Perubahan API
- Atribut
orientationdanisUserScrollabletidak lagi menjadi bagian dariSavedState - Metode
saveStatedanrestoreStatemenjadi final dalamFragmentStateAdapter - Anotasi
ViewPager2.OrientationdanViewPager2.ScrollStatemenjadi nonpublik
Perbaikan bug
SavedState: perbaikan masalah pemulihan yang terjadi saatActivitydihancurkan/dibuat ulangSavedState: pemulihan yang ditunda hingga adaptor ditetapkanOnPageChangeCallback: perbaikan kasus ekstrem kecil
Versi 1.0.0-alpha03
3 April 2019
androidx.viewpager2:viewpager2:1.0.0-alpha03 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Fitur baru
- Kemampuan untuk men-scroll ViewPager2 secara terprogram:
fakeDragBy(offsetPx).
Perubahan API
FragmentStateAdaptersekarang membutuhkan objekLifecycle. Dua konstruktor utilitas ditambahkan agar dapat diperoleh dariFragmentActivityhost atauFragmenthost.
Perbaikan bug
- Sejumlah perbaikan dukungan
Fragment:- penanganan update set data saat diminimalkan, atau selama rotasi layar;
- penghapusan Fragment yang tidak relevan setelah rotasi;
- penghapusan status tersimpan pada item yang telah dihapus.
PageChangeCallback: perbaikan penghitungan offset halaman untuk halaman yang memiliki margin.
Versi 1.0.0-alpha02
13 Maret 2019
androidx.viewpager2:viewpager2:1.0.0-alpha02 dirilis. Daftar lengkap commit yang disertakan dalam versi ini dapat dilihat di sini.
Fitur baru
- Kemampuan untuk menonaktifkan input pengguna (
setUserInputEnabled,isUserInputEnabled)
Perubahan API
- Class ViewPager2 dinyatakan final
Perbaikan bug
- Perbaikan kestabilan
FragmentStateAdapter
Versi 1.0.0-alpha01
7 Februari 2019
androidx.viewpager2:viewpager2 1.0.0-alpha01 dirilis. Ini adalah rilis pertama ViewPager2.
Fitur baru
- Dibandingkan dengan versi
android.support.v4.view.ViewPagersebelumnya (VP1):- Dukungan tata letak kanan-ke-kiri (RTL)
- Dukungan orientasi vertikal
notifyDataSetChangedberfungsi penuh (bug VP1 telah diatasi)
Perubahan API
FragmentStateAdaptermenggantikanFragmentStatePagerAdapterRecyclerView.AdaptermenggantikanPagerAdapterregisterOnPageChangeCallbackmenggantikanaddPageChangeListener
Masalah umum
- clipToPadding
- tidak ada fakeDrag
- JavaDoc
- nested scrolling paralel dengan orientasi
- tidak ada kontrol batas luar layar
- memerlukan integrasi TabLayout yang lebih baik
- tidak ada penyetel pageWidth (dipaksa 100%/100%)
- transformer halaman: tidak ada pilihan lapisan hardware/software; tidak ada urutan menggambar terbalik
- membuat item saat ini tetap terlihat saat suatu halaman disisipkan sebelum halaman saat ini
- navigasi keyboard perlu diperbaiki
- Perbaikan stabilitas/performa
FragmentStateAdapterakan segera hadir