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 correttamenteCollectionInfoeCollectionItemInfo, che RecyclerView1.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'invioWindowInsetsnon 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 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 elementiFragmentnon principali sono limitati aSTARTEDe il relativomenuVisibilityè impostato su false.PageTransformer,MarginPageTransformer,CompositePageTransformer: documentazione perpositioncorretta.
Correzioni di bug
currentItemdopo la modifica del set di dati / la modifica dell'adattatore è stata corretta.MarginPageTransformerconoffscreenPageLimitproblema 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 conRecyclerView.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 diView/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 quandoActivityviene 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
FragmentStateAdapterora richiede un oggettoLifecycle. Sono stati aggiunti due costruttori di utilità per ottenerlo dall'hostFragmentActivityo 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
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
FragmentStateAdaptersostituisceFragmentStatePagerAdapterRecyclerView.AdaptersostituiscePagerAdapterregisterOnPageChangeCallbacksostituisceaddPageChangeListener
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