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-rc01o versioni successive.
- ViewPager2ora compila correttamente- CollectionInfoe- CollectionItemInfo, che RecyclerView- 1.2.0-alpha02e versioni successive non compilano più per impostazione predefinita.
- È stata aggiunta l'interfaccia FragmentTransactionCallbackper ascoltare le modifiche del ciclo di vita dei frammenti che si verificano all'interno diFragmentStateAdapter.
- È stato risolto il problema FragmentStateAdapterrelativo 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 WindowInsetsvengono 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)
- ViewPager2ora non tenta più di correggere l'invio- WindowInsetsnon funzionante delle vecchie versioni dell'API (< 30), perché la correzione stessa può essere dannosa per i fratelli di- ViewPager2. La correzione è ancora disponibile, ma è diventata un'opzione che gli sviluppatori possono attivare caso per caso. Attiva la correzione chiamando- WindowInsetsApplier.install(viewPager2)). (Ic9a85)
Correzioni di bug
- Risolvere i problemi di compatibilità con le versioni più recenti di RecyclerView. Gli utenti di questa versione diViewPager2devono eseguire l'aggiornamento ad almenoRecyclerView1.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 FragmentTransactionCallbackper ascoltare le modifiche del ciclo di vita dei frammenti che si verificano all'interno diFragmentStateAdapter. (Ibda77)
Correzioni di bug
- È stato risolto il problema FragmentStateAdapterrelativo 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 raccoltaFragmentsottostante)
- Animazioni di modifica del set di dati (incluso il supporto di DiffUtil)
 
- Migrazione facile dall'implementazione ViewPagerprecedente (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 requestFocusin una pagina off-screen che causa una modifica della pagina. Il comportamento ora è coerente con ViewPager originale. (b/140656866)
- Correzione del problema per cui focusrimane 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 Fragmentquando 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 FragmentStateAdapterproblema relativo ai casi limite con la pila di ritornoFragment. (b/139095195)
- Correzione del problema relativo a EditTextcon 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 ItemDecorationed è 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 FragmentStateAdapterrelativo allo stato transitorioFragment. b/134246546
- Correzione dei problemi currentItemescrollStatequando 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.updateCurrentItemdurante lo scorrimento e l'aggiornamento del set di dati
- Correzione dell'arresto anomalo di NullPointerExceptionrelativo aViewPager2.isLayoutRtl
- TOUCH_SLOP_PAGINGora è un valore predefinito per la tolleranza al tocco
- Eventi OnPageChangeCallbackcorretti per gli adattatori vuoti (pagina0anziché-1per 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_DOWNe così via
Modifiche all'API
- FragmentStateAdapter: gli elementi- Fragmentnon principali sono limitati a- STARTEDe il relativo- menuVisibilityè impostato su false.
- PageTransformer,- MarginPageTransformer,- CompositePageTransformer: documentazione per- positioncorretta.
Correzioni di bug
- currentItemdopo la modifica del set di dati / la modifica dell'adattatore è stata corretta.
- MarginPageTransformercon- offscreenPageLimitproblema risolto.
- Azioni di accessibilità in modalità FakeDragcorrette.
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 con- RecyclerView.
- MarginPageTransformerintrodotto per consentire di creare spazio tra le pagine (al di fuori dell'inserto di pagina).
- CompositePageTransformerintrodotto per fornire la possibilità di combinare più- PageTransformer.
Modifiche all'API
- Il metodo FragmentStateAdapter#getItemè stato rinominato inFragmentStateAdapter#createFragmentperché il nome precedente si è dimostrato fonte di bug in passato.
- Il valore OFFSCREEN_PAGE_LIMIT_DEFAULTè passato da0a-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_SETTLINGviene interrotto da un trascinamento nella direzione opposta.
- Problemi relativi al caricatore delle classi FragmentStateAdapterrisolti nel contesto "Non conservare le attività".
- Documentazione di setOffscreenPageLimitmigliorata.
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 di- View/- Fragmentdi pagina conservati nella gerarchia delle visualizzazioni
Modifiche alle API
- Gli attributi orientationeisUserScrollablenon fanno più parte diSavedState
- I metodi saveStateerestoreStatesono stati definiti definitivi aFragmentStateAdapter
- Annotazioni di ViewPager2.OrientationeViewPager2.ScrollStatenon rese pubbliche
Correzioni di bug
- SavedState: è stato risolto un problema di ripristino quando- Activityviene distrutto / ricreato
- SavedState: ripristino ritardato fino alla configurazione dell'adattatore
- OnPageChangeCallback: 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
- FragmentStateAdapterora richiede un oggetto- Lifecycle. Sono stati aggiunti due costruttori di utilità per ottenerlo dall'host- FragmentActivityo dall'host- Fragment.
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
- FragmentStateAdaptercorrezioni 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
- notifyDataSetChangedcompletamente funzionale (bug VP1 risolti)
 
Modifiche all'API
- FragmentStateAdaptersostituisce- FragmentStatePagerAdapter
- RecyclerView.Adaptersostituisce- PagerAdapter
- registerOnPageChangeCallbacksostituisce- addPageChangeListener
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
- FragmentStateAdapterMiglioramenti della stabilità / delle prestazioni in arrivo
