Google berkomitmen untuk mendorong terwujudnya keadilan rasial bagi komunitas Kulit Hitam. Lihat caranya.

ViewPager2

Menampilkan View atau Fragment dalam format yang dapat digeser.
Update Terbaru Rilis Stabil Saat Ini Kandidat Rilis Berikutnya Rilis Beta Rilis Alfa
1 April 2020 1.0.0 - - 1.1.0-alpha01

Dependensi AndroidX

Untuk menggunakan ViewPager2, tambahkan dependensi AndroidX berikut ke file build.gradle project Anda:

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

Masukan

Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau memiliki ide untuk meningkatkan kualitas library ini. Harap lihat masalah yang ada di library ini sebelum Anda membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah ada dengan mengklik tombol bintang.

Membuat masalah baru

Lihat dokumentasi Issue Tracker untuk mengetahui informasi selengkapnya.

Versi 1.1.0

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 dalam FragmentStateAdapter. (Ibda77)

Perbaikan Bug

  • Memperbaiki masalah FragmentStateAdapter dengan visibilitas menu fragmen awal saat menambahkan fragmen ke file FragmentManager. (I9d2ff, b/144442240)

Versi 1.0.0

Versi 1.0.0

20 November 2019

androidx.viewpager2:viewpager2:1.0.0 dirilis tanpa perubahan apa pun dari versi 1.0.0-rc01. Versi 1.0.0 berisi commit berikut.

Fitur utama 1.0.0

  • Peningkatan dari penerapan ViewPager sebelumnya:
    • Dukungan tata letak RTL (kanan-ke-kiri)
    • Dukungan orientasi vertikal
    • Dukungan Fragment yang andal (termasuk penanganan perubahan pada kumpulan Fragment yang mendasarinya)
    • Animasi perubahan set data (termasuk dukungan DiffUtil)
  • Migrasi yang mudah dari penerapan ViewPager sebelumnya (API yang sama, jika memungkinkan). Silakan lihat panduan migrasi dan aplikasi contoh.

Lihat panduan tentang menggunakan ViewPager2 untuk beralih di antara 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 untuk pengurutan transaksi jeda/lanjutkan Fragment saat mengubah halaman (kami sekarang selalu menjeda item utama yang lama sebelum melanjutkan yang baru). (b/139489059)
  • Perbaikan untuk canScrollHorizontally(int) dan canScrollVertically(int), yang kini akan menampilkan apakah ViewPager2 dapat men-scroll ke arah yang ditentukan. (b/141848404)
  • Masalah dalam SwipeRefreshLayout telah diperbaiki 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 data Fragment 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 dengan instance ItemDecoration, dan solusi untuk positioning indikator overscroll. (b/139012032)
  • Sejumlah masalah telah diperbaiki 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 dengan status Fragment transien. b/134246546
  • Perbaikan untuk masalah currentItem dan scrollState saat set data diubah pada waktu scroll pelan (kasus ekstrem telah ditangani). b/137642608
  • Perbaikan untuk animasi PageTransformer (termasuk MarginPageTransformer) yang bermasalah dengan animasi perubahan set data. b/134658996
  • Perbaikan untuk animasi scroll pelan 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 yang 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 dengan ViewPager2.isLayoutRtl
  • TOUCH_SLOP_PAGING sekarang menjadi slop sentuh default
  • Peristiwa OnPageChangeCallback diperbaiki untuk adaptor kosong (halaman 0, bukan -1 untuk kesamaan dengan ViewPager1)

Masalah umum

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 kami rencanakan sebelum membekukan API ini dan beralih ke beta - harap berikan masukan API kepada kami.

Fitur baru

  • Fondasi untuk Aksesibilitas yang lebih baik: ACTION_PAGE_RIGHT, ACTION_PAGE_DOWN, dll.

Perubahan API

  • FragmentStateAdapter: Fragment item nonprimer dibatasi pada STARTED, dan menuVisibility miliknya ditetapkan ke false.
  • PageTransformer, MarginPageTransformer, CompositePageTransformer: dokumentasi untuk position telah diperbaiki.

Perbaikan bug

  • currentItem setelah perubahan set data/perubahan adaptor telah diperbaiki.
  • Masalah MarginPageTransformer dengan offscreenPageLimit telah diperbaiki.
  • Tindakan aksesibilitas saat perilaku FakeDrag sedang aktif telah diperbaiki.

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 dengan RecyclerView.
  • MarginPageTransformer diperkenalkan guna memberikan kemampuan untuk membuat ruang antarhalaman (di luar sisipan halaman).
  • CompositePageTransformer diperkenalkan guna memberikan kemampuan untuk menggabungkan beberapa PageTransformer.

Perubahan API

  • Metode FragmentStateAdapter#getItem diganti namanya menjadi FragmentStateAdapter#createFragment. Nama metode yang sebelumnya telah terbukti mengakibatkan bug.
  • Nilai OFFSCREEN_PAGE_LIMIT_DEFAULT diubah dari 0 menjadi -1. Perubahan kode klien tidak diperlukan jika konstanta OFFSCREEN_PAGE_LIMIT_DEFAULT digunakan.

Perbaikan bug

  • Perilaku getCurrentItem() saat SCROLL_STATE_SETTLING terganggu oleh peristiwa tarik ke arah yang berlawanan telah dibetulkan.
  • Masalah loader class FragmentStateAdapter telah ditangani 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 oleh View/Fragment dalam hierarki tampilan

Perubahan API

  • Atribut orientation dan isUserScrollable tidak lagi menjadi bagian dari SavedState
  • Metode saveState dan restoreState dialihkan menjadi final dalam FragmentStateAdapter
  • Anotasi ViewPager2.Orientation dan ViewPager2.ScrollState menjadi nonpublik

Perbaikan bug

  • SavedState: memperbaiki masalah pemulihan yang terjadi saat Activity dihancurkan/dibuat ulang
  • SavedState: pemulihan yang ditunda hingga adaptor ditetapkan
  • OnPageChangeCallback: kasus ekstrem kecil telah diperbaiki

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 objek Lifecycle. Dua konstruktor utilitas ditambahkan agar dapat diperoleh dari FragmentActivity host atau Fragment host.

Perbaikan bug

  • Sejumlah perbaikan dukungan Fragment:
    • menangani update set data saat diminimalkan, atau selama rotasi layar;
    • menghapus Fragment yang tidak relevan setelah rotasi;
    • menghapus status tersimpan dari item yang telah dihapus.
  • PageChangeCallback: memperbaiki 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 menggantikan FragmentStatePagerAdapter
  • RecyclerView.Adapter menggantikan PagerAdapter
  • registerOnPageChangeCallback menggantikan addPageChangeListener

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 setter pageWidth (dipaksa 100%/100%)
  • transformer halaman: tidak ada pilihan lapisan hardware/software; tidak ada urutan menggambar terbalik
  • membuat item saat ini tetap terlihat saat memasukkan halaman sebelum halaman saat ini
  • navigasi keyboard perlu ditingkatkan
  • Peningkatan stabilitas/performa FragmentStateAdapter akan segera hadir