ViewPager2
Ultimo aggiornamento | Release stabile | Candidato per la release | Versione beta | Versione alpha |
---|---|---|---|---|
14 maggio 2024 | 1.1.0 | - | - | - |
Dipendenze AndroidX
Per utilizzare ViewPager2
, aggiungi la seguente dipendenza AndroidX al file build.gradle
del progetto:
Alla moda
dependencies { implementation "androidx.viewpager2:viewpager2:1.1.0" }
Kotlin
dependencies { implementation("androidx.viewpager2:viewpager2:1.1.0") }
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa raccolta. Prima di crearne uno nuovo, dai un'occhiata ai problemi esistenti in questa raccolta. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.
Per ulteriori informazioni, consulta la documentazione di Issue Tracker.
Versione 1.1.0
Versione 1.1.0
14 maggio 2024
androidx.viewpager2:viewpager2:1.1.0
viene rilasciato. La versione 1.1.0 contiene questi commit.
Modifiche importanti dalla versione 1.0.0
- Sono stati corretti gli arresti anomali quando la funzionalità viene utilizzata con RecyclerView
1.3.1-rc01
o versioni successive. ViewPager2
ora compila correttamenteCollectionInfo
eCollectionItemInfo
, che RecyclerView1.2.0-alpha02
e versioni successive non compilano più per impostazione predefinita.- È stata aggiunta l'interfaccia
FragmentTransactionCallback
per ascoltare le modifiche del ciclo di vita dei frammenti che si verificano all'interno diFragmentStateAdapter
. - È stato risolto il problema
FragmentStateAdapter
relativo alla visibilità del menu del frammento iniziale quando si aggiunge un frammento alFragmentManager
. - È stato corretto l'invio degli inserti della finestra: ora tutte le pagine ricevono gli stessi inserti. A causa del modo in cui
WindowInsets
vengono inviati nelle vecchie versioni dell'API (< API 30) che può impedire la disponibilità degli inserti per le visualizzazioni correlate, devi attivare questa correzione tramiteWindowInsetsApplier.install(viewPager2)
se vuoi applicare gli inserti sui dispositivi con API precedente alla 30.
Versione 1.1.0-rc01
1° maggio 2024
androidx.viewpager2:viewpager2:1.1.0-rc01
viene rilasciato senza modifiche significative rispetto alla versione 1.1.0-beta02. La versione 1.1.0-rc01 contiene questi commit.
Versione 1.1.0-beta02
24 maggio 2023
Viene rilasciato androidx.viewpager2:viewpager2:1.1.0-beta02
. La versione 1.1.0-beta02 contiene questi commit.
Modifiche all'API
- Aggiunta la funzionalità di salvataggio dei callback dello stato del frammento a
FragmentTransactionCallback
. (I45b90) ViewPager2
ora non tenta più di correggere l'invioWindowInsets
non funzionante delle vecchie versioni dell'API (< 30), perché la correzione stessa può essere dannosa per i fratelli diViewPager2
. La correzione è ancora disponibile, ma è diventata un'opzione che gli sviluppatori possono attivare caso per caso. Attiva la correzione chiamandoWindowInsetsApplier.install(viewPager2))
. (Ic9a85)
Correzioni di bug
- Risolvere i problemi di compatibilità con le versioni più recenti di
RecyclerView
. Gli utenti di questa versione diViewPager2
devono eseguire l'aggiornamento ad almenoRecyclerView
1.3.1-rc01.
Versione 1.1.0-beta01
4 agosto 2021
Viene rilasciato androidx.viewpager2:viewpager2:1.1.0-beta01
. La versione 1.1.0-beta01 contiene questi commit.
Modifiche alle API
Esegui l'upgrade di androidx per utilizzare Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Passare al targeting di Java 8 per tutte le librerie androidx (2923f39)
Correzioni di bug
- È stato corretto l'invio degli inserti della finestra. Ora tutte le pagine ricevono gli stessi inserti. (I47fef)
Versione 1.1.0-alpha01
1° aprile 2020
androidx.viewpager2:viewpager2:1.1.0-alpha01
viene rilasciato. La versione 1.1.0-alpha01 contiene questi commit.
Questa release è accompagnata da una modifica in RecyclerView 1.2.0-alpha02 che compila CollectionInfo
e CollectionItemInfo
che RecyclerView
non fornisce più per impostazione predefinita. Quando esegui l'aggiornamento a RecyclerView 1.2.0-alpha02
, aggiorna anche ViewPager2
per evitare regressioni dell'accessibilità.
Nuove funzionalità
- È stata aggiunta l'interfaccia
FragmentTransactionCallback
per ascoltare le modifiche del ciclo di vita dei frammenti che si verificano all'interno diFragmentStateAdapter
. (Ibda77)
Correzioni di bug
- È stato risolto il problema
FragmentStateAdapter
relativo alla visibilità del menu del frammento iniziale durante l'aggiunta di un frammento aFragmentManager
. (I9d2ff, b/144442240)
Versione 1.0.0
Versione 1.0.0
20 novembre 2019
androidx.viewpager2:viewpager2:1.0.0
viene rilasciato senza modifiche rispetto alla versione 1.0.0-rc01. La versione 1.0.0 contiene questi commit.
Funzionalità principali della versione 1.0.0
- Miglioramenti rispetto alla precedente implementazione di ViewPager:
- Supporto del layout RTL (da destra a sinistra)
- Supporto dell'orientamento verticale
- Supporto affidabile di
Fragment
(inclusa la gestione delle modifiche alla raccoltaFragment
sottostante) - Animazioni di modifica del set di dati (incluso il supporto di
DiffUtil
)
- Migrazione facile dall'implementazione
ViewPager
precedente (parità API, se possibile). Consulta la guida alla migrazione e l'app di esempio.
Consulta la guida sull'utilizzo di ViewPager2 per scorrere tra i frammenti.
Versione 1.0.0-rc01
23 ottobre 2019
androidx.viewpager2:viewpager2:1.0.0-rc01
viene rilasciato senza modifiche dal giorno 1.0.0-beta05
. La versione 1.0.0-rc01 contiene questi commit.
Versione 1.0.0-beta05
9 ottobre 2019
androidx.viewpager2:viewpager2:1.0.0-beta05
viene rilasciato. La versione 1.0.0-beta05 contiene questi commit.
Correzioni di bug
- Correzione per
requestFocus
in una pagina off-screen che causa una modifica della pagina. Il comportamento ora è coerente con ViewPager originale. (b/140656866) - Correzione del problema per cui
focus
rimane in una pagina non visibile sullo schermo dopo una modifica della pagina. Ora lo stato attivo viene cancellato quando si cambia pagina. (b/140656866) - Correzione dell'ordinamento delle transazioni di messa in pausa / ripristino di
Fragment
quando si cambia pagina (ora mettiamo sempre in pausa l'elemento principale precedente prima di ripristinare quello nuovo). (b/139489059) - Correzione per
canScrollHorizontally(int)
ecanScrollVertically(int)
: ora viene restituito se ViewPager2 può scorrere nella direzione specificata. (b/141848404) - È stato risolto un problema di ScorriRefreshLayout per funzionare meglio con ViewPager2.
Versione 1.0.0-beta04
5 settembre 2019
androidx.viewpager2:viewpager2:1.0.0-beta04
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Correzioni di bug
- Correzione del
FragmentStateAdapter
problema relativo ai casi limite con la pila di ritornoFragment
. (b/139095195) - Correzione del problema relativo a
EditText
con determinate configurazioni degli attributi che causavano uno scorrimento/salto di pagina durante la digitazione/l'attivazione dell'attenzione. (b/138044582, b/139432498) - È stata risolta una problematica relativa alle istanze
ItemDecoration
ed è stata trovata una soluzione alternativa per il posizionamento dell'indicatore di scorrimento eccessivo. (b/139012032) - Sono stati risolti diversi problemi in altri componenti per migliorare il funzionamento con
ViewPager2
: RecyclerView, NestedScrollView e Navigation.
Versione 1.0.0-beta03
7 agosto 2019
androidx.viewpager2:viewpager2:1.0.0-beta03
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Correzioni di bug
- Correzione del problema
FragmentStateAdapter
relativo allo stato transitorioFragment
. b/134246546 - Correzione dei problemi
currentItem
escrollState
quando un set di dati viene modificato durante uno scorrimento fluido (casi limite risolti). b/137642608 - Correzione per le animazioni di
PageTransformer
(inclusoMarginPageTransformer
) in conflitto con le animazioni di modifica del set di dati. b/134658996 - Correzione per le animazioni di scorrimento fluido in set di dati di grandi dimensioni (limite di valore intero
float
). b/134858960
Versione 1.0.0-beta02
19 luglio 2019
androidx.viewpager2:viewpager2:1.0.0-beta02
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Correzioni di bug
- È stata rimossa la dipendenza da JaCoCo non intenzionale introdotta in
1.0.0-beta01
. (b/137782951)
Versione 1.0.0-beta01
17 luglio 2019
androidx.viewpager2:viewpager2:1.0.0-beta01
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Correzioni di bug
- Correzione del crash di
ViewPager2.updateCurrentItem
durante lo scorrimento e l'aggiornamento del set di dati - Correzione dell'arresto anomalo di
NullPointerException
relativo aViewPager2.isLayoutRtl
TOUCH_SLOP_PAGING
ora è un valore predefinito per la tolleranza al tocco- Eventi
OnPageChangeCallback
corretti per gli adattatori vuoti (pagina0
anziché-1
per parità conViewPager1
)
Problemi noti
- Stiamo ancora lavorando ai problemi in sospeso prima di passare alla versione stabile
Versione 1.0.0-alpha06
2 luglio 2019
androidx.viewpager2:viewpager2:1.0.0-alpha06
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Questa è la nostra ultima versione alpha pianificata prima del blocco dell'API e del passaggio alla versione beta. Fornisci un feedback sull'API.
Nuove funzionalità
- Nozioni di base per migliorare l'accessibilità:
ACTION_PAGE_RIGHT
,ACTION_PAGE_DOWN
e così via
Modifiche all'API
FragmentStateAdapter
: gli elementiFragment
non principali sono limitati aSTARTED
e il relativomenuVisibility
è impostato su false.PageTransformer
,MarginPageTransformer
,CompositePageTransformer
: documentazione perposition
corretta.
Correzioni di bug
currentItem
dopo la modifica del set di dati / la modifica dell'adattatore è stata corretta.MarginPageTransformer
conoffscreenPageLimit
problema risolto.- Azioni di accessibilità in modalità
FakeDrag
corrette.
Versione 1.0.0-alpha05
5 giugno 2019
androidx.viewpager2:viewpager2:1.0.0-alpha05
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
ItemDecorator
è stato introdotto con un comportamento coerente conRecyclerView
.MarginPageTransformer
introdotto per consentire di creare spazio tra le pagine (al di fuori dell'inserto di pagina).CompositePageTransformer
introdotto per fornire la possibilità di combinare piùPageTransformer
.
Modifiche all'API
- Il metodo
FragmentStateAdapter#getItem
è stato rinominato inFragmentStateAdapter#createFragment
perché il nome precedente si è dimostrato fonte di bug in passato. - Il valore
OFFSCREEN_PAGE_LIMIT_DEFAULT
è passato da0
a-1
. Non è necessaria alcuna modifica al codice client se viene utilizzata la costanteOFFSCREEN_PAGE_LIMIT_DEFAULT
.
Correzioni di bug
- Il comportamento di
getCurrentItem()
è stato corretto quandoSCROLL_STATE_SETTLING
viene interrotto da un trascinamento nella direzione opposta. - Problemi relativi al caricatore delle classi
FragmentStateAdapter
risolti nel contesto "Non conservare le attività". - Documentazione di
setOffscreenPageLimit
migliorata.
Versione 1.0.0-alpha04
7 maggio 2019
androidx.viewpager2:viewpager2:1.0.0-alpha04
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
offscreenPageLimit
: consente un controllo rigoroso del numero diView
/Fragment
di pagina conservati nella gerarchia delle visualizzazioni
Modifiche alle API
- Gli attributi
orientation
eisUserScrollable
non fanno più parte diSavedState
- I metodi
saveState
erestoreState
sono stati definiti definitivi aFragmentStateAdapter
- Annotazioni di
ViewPager2.Orientation
eViewPager2.ScrollState
non rese pubbliche
Correzioni di bug
SavedState
: è stato risolto un problema di ripristino quandoActivity
viene distrutto / ricreatoSavedState
: ripristino ritardato fino alla configurazione dell'adattatoreOnPageChangeCallback
: sono stati corretti casi limite minori
Versione 1.0.0-alpha03
3 aprile 2019
androidx.viewpager2:viewpager2:1.0.0-alpha03
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- Possibilità di scorrere ViewPager2 tramite programmazione:
fakeDragBy(offsetPx)
.
Modifiche all'API
FragmentStateAdapter
ora richiede un oggettoLifecycle
. Sono stati aggiunti due costruttori di utilità per ottenerlo dall'hostFragmentActivity
o dall'hostFragment
.
Correzioni di bug
- Numerose correzioni di supporto per
Fragment
:- gestione degli aggiornamenti dei set di dati quando sono ridotti a icona o durante la rotazione dello schermo.
- rimuovere i frammenti irrilevanti dopo la rotazione.
- rimuovere lo stato salvato degli elementi rimossi.
PageChangeCallback
: è stato corretto il calcolo dell'offset di pagina per le pagine con i margini.
Versione 1.0.0-alpha02
13 marzo 2019
androidx.viewpager2:viewpager2:1.0.0-alpha02
viene rilasciato. L'elenco completo dei commit inclusi in questa versione è disponibile qui.
Nuove funzionalità
- Possibilità di disattivare l'input utente (
setUserInputEnabled
,isUserInputEnabled
)
Modifiche all'API
- Classe ViewPager2 finale
Correzioni di bug
FragmentStateAdapter
correzioni della stabilità
Versione 1.0.0-alpha01
7 febbraio 2019
androidx.viewpager2:viewpager2 1.0.0-alpha01
viene rilasciato. Questa è la prima release di ViewPager2.
Nuove funzionalità
- Rispetto al suo predecessore
android.support.v4.view.ViewPager
(VP1):- Supporto del layout da destra a sinistra (RTL)
- Supporto dell'orientamento verticale
notifyDataSetChanged
completamente funzionale (bug VP1 risolti)
Modifiche all'API
FragmentStateAdapter
sostituisceFragmentStatePagerAdapter
RecyclerView.Adapter
sostituiscePagerAdapter
registerOnPageChangeCallback
sostituisceaddPageChangeListener
Problemi noti
- clipToPadding
- no fakeDrag
- JavaDoc
- scorrimento nidificato parallelo all'orientamento
- Nessun controllo del limite fuori schermo
- è necessaria una migliore integrazione di TabLayout
- nessuna impostazione pageLarghezza (100%/100% forzata)
- page transformer: no hardware/software layer choice; no reverse drawing order
- Mantieni visibile l'elemento corrente quando inserisci una pagina prima di quella corrente
- la navigazione da tastiera richiede interventi
FragmentStateAdapter
Miglioramenti della stabilità / delle prestazioni in arrivo