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-rc01
atau yang lebih tinggi. ViewPager2
kini mengisiCollectionInfo
danCollectionItemInfo
dengan benar yang tidak lagi diisi secara default oleh RecyclerView1.2.0-alpha02
dan yang lebih tinggi.- Menambahkan antarmuka
FragmentTransactionCallback
untuk memproses perubahan siklus proses fragmen yang terjadi di dalamFragmentStateAdapter
. - Perbaikan masalah
FragmentStateAdapter
terkait visibilitas menu fragmen awal saat menambahkan fragmen ke fileFragmentManager
. - Memperbaiki pengiriman inset jendela: semua halaman kini mendapatkan inset yang sama. Karena cara
WindowInsets
dikirim 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) ViewPager2
kini tidak lagi mencoba memperbaiki pengirimanWindowInsets
yang 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
RecyclerView
yang lebih baru. Pengguna versiViewPager2
ini harus diupdate ke setidaknyaRecyclerView
1.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
FragmentTransactionCallback
untuk memproses perubahan siklus proses fragmen yang terjadi di dalamFragmentStateAdapter
. (Ibda77)
Perbaikan Bug
- Perbaikan masalah
FragmentStateAdapter
terkait 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
Fragment
yang andal (termasuk penanganan perubahan pada kumpulanFragment
yang sudah ada) - Animasi perubahan set data (termasuk dukungan
DiffUtil
)
- Migrasi yang mudah dari implementasi
ViewPager
sebelumnya (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
requestFocus
pada halaman di luar layar yang menyebabkan perubahan halaman. Perilaku ini kini konsisten dengan ViewPager yang asli. (b/140656866) - Perbaikan untuk
focus
yang tetap ada pada halaman di luar layar setelah halaman berubah. Fokus kini dapat dihapus saat mengubah halaman. (b/140656866) - Perbaikan perintah transaksi jeda/lanjutkan
Fragment
saat 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
FragmentStateAdapter
dengan dataFragment
sebelumnya. (b/139095195) - Perbaikan untuk
EditText
dengan 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
FragmentStateAdapter
terkait statusFragment
transien. b/134246546 - Perbaikan untuk masalah
currentItem
danscrollState
saat 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.updateCurrentItem
saat men-scroll dan mengupdate set data - Perbaikan untuk error
NullPointerException
yang terkait denganViewPager2.isLayoutRtl
TOUCH_SLOP_PAGING
sekarang menjadi slop sentuh default- Perbaikan peristiwa
OnPageChangeCallback
untuk adaptor kosong (halaman0
, bukannya-1
untuk 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
:Fragment
item nonprimer dibatasi padaSTARTED
, danmenuVisibility
-nya ditetapkan ke false.PageTransformer
,MarginPageTransformer
,CompositePageTransformer
: dokumentasi untukposition
telah diperbaiki.
Perbaikan bug
- Perbaikan
currentItem
setelah perubahan set data/perubahan adaptor. - Perbaikan masalah
MarginPageTransformer
denganoffscreenPageLimit
. - Perbaikan tindakan aksesibilitas saat perilaku
FakeDrag
sedang 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
ItemDecorator
diperkenalkan dengan perilaku yang konsisten denganRecyclerView
.MarginPageTransformer
diperkenalkan untuk memungkinkan pembuatan ruang antarhalaman (di luar inset halaman).CompositePageTransformer
diperkenalkan untuk memungkinkan penggabungan beberapaPageTransformer
.
Perubahan API
- Metode
FragmentStateAdapter#getItem
diganti namanya menjadiFragmentStateAdapter#createFragment
. Nama metode yang sebelumnya telah terbukti mengakibatkan bug. - Nilai
OFFSCREEN_PAGE_LIMIT_DEFAULT
diubah dari0
menjadi-1
. Perubahan kode klien tidak diperlukan jika konstantaOFFSCREEN_PAGE_LIMIT_DEFAULT
digunakan.
Perbaikan bug
- Pembetulan perilaku
getCurrentItem()
saatSCROLL_STATE_SETTLING
terganggu oleh peristiwa tarik ke arah yang berlawanan. - Penanganan masalah loader class
FragmentStateAdapter
dalam 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
/Fragment
dalam hierarki tampilan
Perubahan API
- Atribut
orientation
danisUserScrollable
tidak lagi menjadi bagian dariSavedState
- Metode
saveState
danrestoreState
menjadi final dalamFragmentStateAdapter
- Anotasi
ViewPager2.Orientation
danViewPager2.ScrollState
menjadi nonpublik
Perbaikan bug
SavedState
: perbaikan masalah pemulihan yang terjadi saatActivity
dihancurkan/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
FragmentStateAdapter
sekarang membutuhkan objekLifecycle
. Dua konstruktor utilitas ditambahkan agar dapat diperoleh dariFragmentActivity
host atauFragment
host.
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.ViewPager
sebelumnya (VP1):- Dukungan tata letak kanan-ke-kiri (RTL)
- Dukungan orientasi vertikal
notifyDataSetChanged
berfungsi penuh (bug VP1 telah diatasi)
Perubahan API
FragmentStateAdapter
menggantikanFragmentStatePagerAdapter
RecyclerView.Adapter
menggantikanPagerAdapter
registerOnPageChangeCallback
menggantikanaddPageChangeListener
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
FragmentStateAdapter
akan segera hadir