ViewPager2

Görüntülemeleri veya parçaları kaydırılabilir bir biçimde gösterme
Son Güncelleme Kararlı Sürüm Sürüm Adayı Beta sürümü Alfa Sürümü
14 Mayıs 2024 1.1.0 - - -

AndroidX Bağımlılıkları

ViewPager2 kullanmak için aşağıdaki AndroidX bağımlılığını projenizin build.gradle dosyasına ekleyin:

Eski

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

Kotlin

dependencies {
    implementation("androidx.viewpager2:viewpager2:1.1.0")
}

Geri bildirim

Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmeye yönelik fikirleriniz varsa lütfen bize bildirin. Yeni bir sorun oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oyunuzu ekleyebilirsiniz.

Yeni sorun oluşturma

Daha fazla bilgi için Sorun İzleyici belgelerini inceleyin.

Sürüm 1.1.0

Sürüm 1.1.0

14 Mayıs 2024

androidx.viewpager2:viewpager2:1.1.0 iptal edilir. 1.1.0 sürümü bu commit'leri içerir.

1.0.0 sürümünden beri yapılan önemli değişiklikler

  • RecyclerView 1.3.1-rc01 veya daha yüksek bir sürümle kullanıldığında kilitlenme sorunları düzeltildi.
  • ViewPager2 artık RecyclerView 1.2.0-alpha02 ve sonraki sürümlerin varsayılan olarak doldurmadığı CollectionInfo ve CollectionItemInfo öğelerini doğru şekilde dolduruyor.
  • FragmentTransactionCallback içinde gerçekleşen parça yaşam döngüsü değişikliklerini dinlemek için FragmentTransactionCallback arayüzü eklendi.FragmentStateAdapter
  • FragmentManager öğesine bir parça eklerken ilk parça menüsü görünürlüğüyle ilgili FragmentStateAdapter sorunu düzeltildi.
  • Pencere iç kısımlarının gönderimi düzeltildi: Artık tüm sayfalar aynı iç kısımları alıyor. Eski API sürümlerinde (< API 30) WindowInsets öğelerinin gönderilme şekli, yerleştirmelerin kardeş görünümlerde kullanılamamasına neden olabilir. Bu nedenle, < API 30 cihazlarda yerleştirmeleri uygulamak istiyorsanız WindowInsetsApplier.install(viewPager2) aracılığıyla bu düzeltmeyi etkinleştirmeniz gerekir.

Sürüm 1.1.0-rc01

1 Mayıs 2024

androidx.viewpager2:viewpager2:1.1.0-rc01, 1.1.0-beta02 sürümünden bu yana önemli bir değişiklik içermeden yayınlandı. 1.1.0-rc01 sürümü bu commit'leri içerir.

Sürüm 1.1.0-beta02

24 Mayıs 2023

androidx.viewpager2:viewpager2:1.1.0-beta02 iptal edilir. 1.1.0-beta02 sürümü şu commit'leri içerir.

API Değişiklikleri

  • FragmentTransactionCallback öğesine Fragment durumu kaydetme geri çağırmaları eklendi. (I45b90)
  • ViewPager2 artık eski API sürümlerinin (< 30) bozuk WindowInsets gönderimini düzeltmeye çalışmıyor. Bunun nedeni, düzeltmenin kendisinin ViewPager2 kardeşleri için zararlı olabilmesidir. Düzeltme hâlâ kullanılabilir ancak geliştiricilerin her durumda ayrı ayrı karar verebilmesi için etkinleştirilmesi gerekir. WindowInsetsApplier.install(viewPager2)) numarasını arayarak düzeltmeyi etkinleştirin. (Ic9a85)

Hata Düzeltmeleri

  • RecyclerView'nın yeni sürümleriyle ilgili uyumluluk sorunlarını düzeltin. ViewPager2'nın bu sürümünü kullananlar en az RecyclerView 1.3.1-rc01 sürümüne güncellemelidir.

Sürüm 1.1.0-beta01

4 Ağustos 2021

androidx.viewpager2:viewpager2:1.1.0-beta01 iptal edilir. 1.1.0-beta01 sürümü şu commit'leri içerir.

API Değişiklikleri

Hata Düzeltmeleri

  • Pencere iç kısımlarının gönderimi düzeltildi. Artık tüm sayfalar aynı iç kısımlara sahip. (I47fef)

Sürüm 1.1.0-alpha01

1 Nisan 2020

androidx.viewpager2:viewpager2:1.1.0-alpha01 iptal edilir. 1.1.0-alpha01 sürümü şu commit'leri içerir.

Bu sürüm, RecyclerView 1.2.0-alpha02'de RecyclerView'in artık varsayılan olarak sağlamadığı CollectionInfo ve CollectionItemInfo değerlerini doldurarak yapılan bir değişiklikle birlikte yayınlanmıştır. RecyclerView 1.2.0-alpha02 sürümüne güncellerken Erişilebilirlik gerilemelerini önlemek için ViewPager2 sürümünü de güncelleyin.

Yeni Özellikler

  • FragmentTransactionCallback içinde gerçekleşen parça yaşam döngüsü değişikliklerini dinlemek için FragmentTransactionCallback arayüzü eklendi.FragmentStateAdapter (Ibda77)

Hata Düzeltmeleri

  • FragmentManager öğesine bir parça eklerken ilk parça menüsü görünürlüğüyle ilgili FragmentStateAdapter sorunu düzeltildi. (I9d2ff, b/144442240)

Sürüm 1.0.0

Sürüm 1.0.0

20 Kasım 2019

androidx.viewpager2:viewpager2:1.0.0, 1.0.0-rc01 sürümüne kıyasla herhangi bir değişiklik yapılmadan yayınlandı. 1.0.0 sürümü şu commit'leri içerir.

1.0.0 sürümünün temel özellikleri

  • Önceki ViewPager uygulamasındaki iyileştirmeler:
    • RTL (sağdan sola) düzen desteği
    • Dikey yön desteği
    • Güvenilir Fragment desteği (temel Fragment koleksiyonunda yapılan değişikliklerin işlenmesi dahil)
    • Veri kümesi değişikliği animasyonları (DiffUtil desteği dahil)
  • Önceki ViewPager uygulamasından kolay geçiş (mümkün olduğunda API eşliği). Taşıma rehberini ve örnek uygulamayı inceleyin.

Fragment'ler arasında kaydırmak için ViewPager2'yi kullanma kılavuzuna bakın.

Sürüm 1.0.0-rc01

23 Ekim 2019

androidx.viewpager2:viewpager2:1.0.0-rc01, 1.0.0-beta05 tarihinden beri herhangi bir değişiklik yapılmadan yayınlandı. 1.0.0-rc01 sürümü şu commit'leri içerir.

Sürüm 1.0.0-beta05

9 Ekim 2019

androidx.viewpager2:viewpager2:1.0.0-beta05 iptal edilir. 1.0.0-beta05 sürümü şu commit'leri içerir.

Hata düzeltmeleri

  • Ekran dışı bir sayfada requestFocus simgesinin sayfa değişikliğine neden olması sorunu düzeltildi. Davranış artık orijinal ViewPager ile tutarlı. (b/140656866)
  • Sayfa değişikliğinden sonra focus simgesinin ekran dışı bir sayfada kalması sorunu düzeltildi. Sayfa değiştirildiğinde odak artık temizleniyor. (b/140656866)
  • Sayfa değiştirilirken Fragment duraklatma / devam ettirme işlemlerinin sıralanmasıyla ilgili sorun düzeltildi (artık yeni öğeye devam etmeden önce eski birincil öğe her zaman duraklatılıyor). (b/139489059)
  • canScrollHorizontally(int) ve canScrollVertically(int) için düzeltme: Artık ViewPager2'nin belirtilen yönde kaydırılıp kaydırılamayacağını döndürüyorlar. (b/141848404)
  • SwipeRefreshLayout'taki bir sorun düzeltilerek ViewPager2 ile daha iyi çalışması sağlandı.

Sürüm 1.0.0-beta04

5 Eylül 2019

androidx.viewpager2:viewpager2:1.0.0-beta04 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Hata düzeltmeleri

  • FragmentStateAdapter eski yığınında Fragment ile ilgili uç durum sorunu düzeltildi. (b/139095195)
  • Belirli özellik yapılandırmalarıyla EditText yazma/odaklanma sırasında kaydırmaya/sayfa atlamasına neden olan sorun düzeltildi. (b/138044582, b/139432498)
  • ItemDecoration örnekleriyle ilgili sorun düzeltildi ve aşırı kaydırma göstergesi konumlandırması için geçici çözüm eklendi. (b/139012032)
  • ViewPager2, RecyclerView, NestedScrollView ve Navigation ile daha iyi çalışması için diğer bileşenlerde çeşitli sorunlar düzeltildi.

Sürüm 1.0.0-beta03

7 Ağustos 2019

androidx.viewpager2:viewpager2:1.0.0-beta03 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Hata düzeltmeleri

  • Geçici Fragment durumuyla ilgili FragmentStateAdapter sorunu düzeltildi. b/134246546
  • Veri kümesi, sorunsuz kaydırma sırasında değiştirildiğinde ortaya çıkan currentItem ve scrollState sorunları düzeltildi (uç durumlar ele alındı). b/137642608
  • Veri kümesi değişikliği animasyonlarıyla çakışan PageTransformer (MarginPageTransformer dahil) animasyonları düzeltildi. b/134658996
  • Büyük veri kümelerinde (float tam sayı değeri sınırı) sorunsuz kaydırma animasyonları için düzeltme. b/134858960

Sürüm 1.0.0-beta02

19 Temmuz 2019

androidx.viewpager2:viewpager2:1.0.0-beta02 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Hata düzeltmeleri

  • 1.0.0-beta01 sürümünde eklenen, istenmeyen Jacoco bağımlılığı kaldırıldı. (b/137782951)

Sürüm 1.0.0-beta01

17 Temmuz 2019

androidx.viewpager2:viewpager2:1.0.0-beta01 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Hata düzeltmeleri

  • Veri kümesi kaydırılırken ve güncellenirken ViewPager2.updateCurrentItem kilitlenmesi sorunu düzeltildi.
  • ViewPager2.isLayoutRtl ile ilgili NullPointerException kilitlenmesi düzeltildi.
  • TOUCH_SLOP_PAGING artık varsayılan dokunarak kaydırma
  • Boş bağdaştırıcılar için OnPageChangeCallback etkinlik düzeltildi (ViewPager1 ile eşitlik için -1 yerine 0 sayfası)

Bilinen sorunlar

Sürüm 1.0.0-alpha06

2 Temmuz 2019

androidx.viewpager2:viewpager2:1.0.0-alpha06 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Bu, API'yi dondurmadan ve beta sürümüne geçmeden önceki son planlanmış alfa sürümümüzdür. Lütfen API ile ilgili geri bildirimlerinizi bizimle paylaşın.

Yeni özellikler

  • Geliştirilmiş erişilebilirlik için temel özellikler: ACTION_PAGE_RIGHT, ACTION_PAGE_DOWN vb.

API değişiklikleri

  • FragmentStateAdapter: non-primary-item Fragment öğelerinin sayısı STARTED ile sınırlanır ve menuVisibility değeri false olarak ayarlanır.
  • PageTransformer, MarginPageTransformer, CompositePageTransformer: positionsabitlendi.

Hata düzeltmeleri

  • Veri kümesi değişikliği / adaptör değişikliği düzeltildikten sonra currentItem.
  • offscreenPageLimit sorununun bulunduğu MarginPageTransformer düzeltildi.
  • FakeDrag davranışındayken erişilebilirlik işlemleriyle ilgili sorun düzeltildi.

Sürüm 1.0.0-alpha05

5 Haziran 2019

androidx.viewpager2:viewpager2:1.0.0-alpha05 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Yeni özellikler

  • ItemDecorator, RecyclerView ile tutarlı bir davranışla kullanıma sunuldu.
  • MarginPageTransformer, sayfalar arasında boşluk oluşturma (sayfa yerleşimi dışında) olanağı sağlamak için kullanıma sunuldu.
  • Birden fazla PageTransformer birleştirme olanağı sunmak için CompositePageTransformer özelliği kullanıma sunuldu.

API değişiklikleri

  • FragmentStateAdapter#getItem yöntemi FragmentStateAdapter#createFragment olarak yeniden adlandırıldı. Önceki yöntem adının geçmişte hatalara neden olduğu kanıtlandı.
  • OFFSCREEN_PAGE_LIMIT_DEFAULT değeri, 0 yerine -1 oldu. OFFSCREEN_PAGE_LIMIT_DEFAULT sabiti kullanılıyorsa istemci kodu değişikliği yapılması gerekmez.

Hata düzeltmeleri

  • SCROLL_STATE_SETTLING, ters yönde sürükleme işlemiyle kesintiye uğradığında getCurrentItem() davranışının düzeltilmesi.
  • "Etkinlikleri saklama" bağlamında FragmentStateAdapter sınıf yükleyici sorunları giderildi.
  • setOffscreenPageLimit dokümanları iyileştirildi.

Sürüm 1.0.0-alpha04

7 Mayıs 2019

androidx.viewpager2:viewpager2:1.0.0-alpha04 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Yeni özellikler

  • offscreenPageLimit: Görünüm hiyerarşisinde tutulan sayfa View'larının / Fragment'larının sayısı üzerinde sıkı bir kontrol sağlar.

API değişiklikleri

  • orientation ve isUserScrollable özellikleri artık SavedState'ın bir parçası değil
  • saveState ve restoreState yöntemleri FragmentStateAdapter'de son hâlini aldı
  • ViewPager2.Orientation ve ViewPager2.ScrollState notu herkese açık olmaktan çıkarıldı

Hata düzeltmeleri

  • SavedState: Activity yok edildiğinde / yeniden oluşturulduğunda geri yükleme ile ilgili sorun düzeltildi
  • SavedState: adaptör ayarlanana kadar geri yükleme işlemi ertelenir
  • OnPageChangeCallback: Küçük sıra dışı durumlar düzeltildi.

Sürüm 1.0.0-alpha03

3 Nisan 2019

androidx.viewpager2:viewpager2:1.0.0-alpha03 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Yeni özellikler

  • ViewPager2'yi programatik olarak kaydırma özelliği: fakeDragBy(offsetPx).

API değişiklikleri

  • FragmentStateAdapter artık Lifecycle nesnesi gerektiriyor. Ana makineden FragmentActivity veya ana makineden Fragment almak için iki yardımcı oluşturucu eklendi.

Hata düzeltmeleri

  • Çok sayıda Fragment destek düzeltmesi:
    • küçültülmüş durumdayken veya ekran döndürülürken veri kümesi güncellemelerini işleme
    • döndürmeden sonra alakasız parçaları kaldırma,
    • Kaldırılan öğelerin kayıtlı durumunu kaldırma
  • PageChangeCallback: Kenar boşlukları olan sayfalar için sayfa ofseti hesaplaması düzeltildi.

Sürüm 1.0.0-alpha02

13 Mart 2019

androidx.viewpager2:viewpager2:1.0.0-alpha02 iptal edilir. Bu sürüme dahil edilen tüm commit'lerin listesini burada bulabilirsiniz.

Yeni özellikler

  • Kullanıcı girişini devre dışı bırakma (setUserInputEnabled, isUserInputEnabled)

API değişiklikleri

  • ViewPager2 sınıfı nihai

Hata düzeltmeleri

  • FragmentStateAdapter kararlılıkla ilgili düzeltmeler

Sürüm 1.0.0-alpha01

7 Şubat 2019

androidx.viewpager2:viewpager2 1.0.0-alpha01 iptal edilir. Bu, ViewPager2'nin ilk sürümüdür.

Yeni özellikler

  • Önceki sürümü android.support.v4.view.ViewPager (VP1) ile karşılaştırma:
    • Sağdan sola (RTL) düzen desteği
    • Dikey yön desteği
    • notifyDataSetChanged Tamamen işlevsel (VP1 hataları giderildi)

API değişiklikleri

  • FragmentStateAdapter, FragmentStatePagerAdapter ile değiştirildi
  • RecyclerView.Adapter, PagerAdapter ile değiştirildi
  • registerOnPageChangeCallback, addPageChangeListener ile değiştirildi

Bilinen sorunlar

  • clipToPadding
  • no fakeDrag
  • JavaDoc
  • yönle paralel iç içe kaydırma
  • Ekran dışı sınırlama kontrolü yok
  • TabLayout ile daha iyi entegrasyon
  • no pageWidth setter (forced 100%/100%)
  • Sayfa dönüştürücü: Donanım/yazılım katmanı seçeneği yok; ters çizim sırası yok
  • Geçerli öğeden önce sayfa eklerken geçerli öğeyi görünür tutma
  • Klavyeyle gezinme için çalışma yapılması gerekiyor
  • FragmentStateAdapter Kararlılık ve performans iyileştirmeleri