ViewPager2
| 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.
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-rc01veya daha yüksek bir sürümle kullanıldığında kilitlenme sorunları düzeltildi. ViewPager2artık RecyclerView1.2.0-alpha02ve sonraki sürümlerin varsayılan olarak doldurmadığıCollectionInfoveCollectionItemInfoöğelerini doğru şekilde dolduruyor.FragmentTransactionCallbackiçinde gerçekleşen parça yaşam döngüsü değişikliklerini dinlemek içinFragmentTransactionCallbackarayüzü eklendi.FragmentStateAdapterFragmentManageröğesine bir parça eklerken ilk parça menüsü görünürlüğüyle ilgiliFragmentStateAdaptersorunu 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ızWindowInsetsApplier.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)ViewPager2artık eski API sürümlerinin (< 30) bozukWindowInsetsgönderimini düzeltmeye çalışmıyor. Bunun nedeni, düzeltmenin kendisininViewPager2kardeş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 azRecyclerView1.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
Kotlin 1.4'ü kullanmak için androidx'i yükseltin (Id6471, b/165307851, b/165300826)
Tüm androidx kitaplıkları için Java 8'i hedeflemeye geçildi (2923f39)
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
FragmentTransactionCallbackiçinde gerçekleşen parça yaşam döngüsü değişikliklerini dinlemek içinFragmentTransactionCallbackarayüzü eklendi.FragmentStateAdapter(Ibda77)
Hata Düzeltmeleri
FragmentManageröğesine bir parça eklerken ilk parça menüsü görünürlüğüyle ilgiliFragmentStateAdaptersorunu 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
Fragmentdesteği (temelFragmentkoleksiyonunda yapılan değişikliklerin işlenmesi dahil) - Veri kümesi değişikliği animasyonları (
DiffUtildesteği dahil)
- Önceki
ViewPageruygulaması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
requestFocussimgesinin 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
focussimgesinin ekran dışı bir sayfada kalması sorunu düzeltildi. Sayfa değiştirildiğinde odak artık temizleniyor. (b/140656866) - Sayfa değiştirilirken
Fragmentduraklatma / 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)vecanScrollVertically(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
FragmentStateAdaptereski yığınındaFragmentile ilgili uç durum sorunu düzeltildi. (b/139095195)- Belirli özellik yapılandırmalarıyla
EditTextyazma/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
Fragmentdurumuyla ilgiliFragmentStateAdaptersorunu düzeltildi. b/134246546 - Veri kümesi, sorunsuz kaydırma sırasında değiştirildiğinde ortaya çıkan
currentItemvescrollStatesorunları düzeltildi (uç durumlar ele alındı). b/137642608 - Veri kümesi değişikliği animasyonlarıyla çakışan
PageTransformer(MarginPageTransformerdahil) animasyonları düzeltildi. b/134658996 - Büyük veri kümelerinde (
floattam 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-beta01sü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.updateCurrentItemkilitlenmesi sorunu düzeltildi. ViewPager2.isLayoutRtlile ilgiliNullPointerExceptionkilitlenmesi düzeltildi.TOUCH_SLOP_PAGINGartık varsayılan dokunarak kaydırma- Boş bağdaştırıcılar için
OnPageChangeCallbacketkinlik düzeltildi (ViewPager1ile eşitlik için-1yerine0sayfası)
Bilinen sorunlar
- Kararlı sürüme geçmeden önce kalan açık sorunlar üzerinde çalışmaya devam ediyoruz.
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_DOWNvb.
API değişiklikleri
FragmentStateAdapter: non-primary-itemFragmentöğelerinin sayısıSTARTEDile sınırlanır vemenuVisibilitydeğ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. offscreenPageLimitsorununun bulunduğuMarginPageTransformerdüzeltildi.FakeDragdavranışı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,RecyclerViewile 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
PageTransformerbirleştirme olanağı sunmak içinCompositePageTransformerözelliği kullanıma sunuldu.
API değişiklikleri
FragmentStateAdapter#getItemyöntemiFragmentStateAdapter#createFragmentolarak yeniden adlandırıldı. Önceki yöntem adının geçmişte hatalara neden olduğu kanıtlandı.OFFSCREEN_PAGE_LIMIT_DEFAULTdeğeri,0yerine-1oldu.OFFSCREEN_PAGE_LIMIT_DEFAULTsabiti 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ığındagetCurrentItem()davranışının düzeltilmesi.- "Etkinlikleri saklama" bağlamında
FragmentStateAdaptersınıf yükleyici sorunları giderildi. setOffscreenPageLimitdokü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 sayfaView'larının /Fragment'larının sayısı üzerinde sıkı bir kontrol sağlar.
API değişiklikleri
orientationveisUserScrollableözellikleri artıkSavedState'ın bir parçası değilsaveStateverestoreStateyöntemleriFragmentStateAdapter'de son hâlini aldıViewPager2.OrientationveViewPager2.ScrollStatenotu herkese açık olmaktan çıkarıldı
Hata düzeltmeleri
SavedState:Activityyok edildiğinde / yeniden oluşturulduğunda geri yükleme ile ilgili sorun düzeltildiSavedState: adaptör ayarlanana kadar geri yükleme işlemi ertelenirOnPageChangeCallback: 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
FragmentStateAdapterartıkLifecyclenesnesi gerektiriyor. Ana makinedenFragmentActivityveya ana makinedenFragmentalmak için iki yardımcı oluşturucu eklendi.
Hata düzeltmeleri
- Çok sayıda
Fragmentdestek 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
FragmentStateAdapterkararlı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
notifyDataSetChangedTamamen işlevsel (VP1 hataları giderildi)
API değişiklikleri
FragmentStateAdapter,FragmentStatePagerAdapterile değiştirildiRecyclerView.Adapter,PagerAdapterile değiştirildiregisterOnPageChangeCallback,addPageChangeListenerile 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
FragmentStateAdapterKararlılık ve performans iyileştirmeleri