ViewPager2
| Ultimo aggiornamento | Release stabile | Candidato per la release | Release beta | Release alpha |
|---|---|---|---|---|
| 14 maggio 2024 | 1.1.0 | - | - | - |
Dipendenze AndroidX
Per utilizzare ViewPager2, aggiungi la seguente dipendenza AndroidX al file
build.gradle del tuo 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 segnalare un nuovo problema, 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 saperne di più, consulta la documentazione di Issue Tracker.
Versione 1.1.0
Versione 1.1.0
14 maggio 2024
androidx.viewpager2:viewpager2:1.1.0 è stato rilasciato. La versione 1.1.0 contiene questi commit.
Modifiche importanti dalla versione 1.0.0
- Sono stati corretti gli arresti anomali quando viene utilizzato con RecyclerView
1.3.1-rc01o versioni successive. ViewPager2ora compila correttamenteCollectionInfoeCollectionItemInfoche RecyclerView1.2.0-alpha02e versioni successive non compilano più per impostazione predefinita.- È stata aggiunta l'interfaccia
FragmentTransactionCallbackper l'ascolto delle modifiche al ciclo di vita dei fragment che si verificano all'interno diFragmentStateAdapter. - È stato risolto il problema
FragmentStateAdapterrelativo alla visibilità iniziale del menu dei frammenti quando si aggiunge un frammento aFragmentManager. - È stato corretto l'invio degli inset della finestra: ora tutte le pagine ricevono gli stessi inset. A causa del modo in cui vengono inviati i
WindowInsetsnelle versioni precedenti dell'API (< API 30), che possono impedire che gli inset siano disponibili per le visualizzazioni di pari livello, devi attivare questa correzione tramiteWindowInsetsApplier.install(viewPager2)se vuoi applicare gli inset sui dispositivi < API 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
androidx.viewpager2:viewpager2:1.1.0-beta02 è stato rilasciato. La versione 1.1.0-beta02 contiene questi commit.
Modifiche alle API
- Aggiunta di callback di salvataggio dello stato del frammento a
FragmentTransactionCallback. (I45b90) ViewPager2ora non tenta più di correggere l'invioWindowInsetsnon funzionante delle versioni precedenti dell'API (< 30), perché la correzione stessa può essere dannosa per i fratelli diViewPager2. La correzione è ancora disponibile, ma è diventata un'opzione di attivazione, in modo che gli sviluppatori possano decidere caso per caso. Attiva la correzione chiamando il numeroWindowInsetsApplier.install(viewPager2)). (Ic9a85)
Correzioni di bug
- Risolvi i problemi di compatibilità con le versioni più recenti di
RecyclerView. Gli utenti di questa versione diViewPager2devono eseguire l'aggiornamento almeno alla versioneRecyclerView1.3.1-rc01.
Versione 1.1.0-beta01
4 agosto 2021
androidx.viewpager2:viewpager2:1.1.0-beta01 è stato rilasciato. 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)
Passaggio al targeting di Java 8 per tutte le librerie androidx (2923f39)
Correzioni di bug
- È stato corretto l'invio degli inset della finestra. Ora tutte le pagine ricevono gli stessi inset. (I47fef)
Versione 1.1.0-alpha01
1° aprile 2020
androidx.viewpager2:viewpager2:1.1.0-alpha01 è stato rilasciato. La versione 1.1.0-alpha01 contiene questi commit.
Questa release accompagna una modifica in RecyclerView 1.2.0-alpha02 tramite il popolamento di 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 l'ascolto delle modifiche al ciclo di vita dei fragment che si verificano all'interno diFragmentStateAdapter. (Ibda77)
Correzioni di bug
- È stato risolto il problema
FragmentStateAdapterrelativo alla visibilità iniziale del menu dei frammenti quando si aggiunge un frammento aFragmentManager. (I9d2ff, b/144442240)
Versione 1.0.0
Versione 1.0.0
20 novembre 2019
androidx.viewpager2:viewpager2:1.0.0 viene rilasciata 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 all'implementazione precedente di ViewPager:
- Supporto del layout RTL (da destra a sinistra)
- Supporto dell'orientamento verticale
- Supporto affidabile di
Fragment(inclusa la gestione delle modifiche alla raccolta diFragmentsottostante) - Animazioni di modifica del set di dati (incluso il supporto di
DiffUtil)
- Facile migrazione dall'implementazione precedente di
ViewPager(parità delle API ove possibile). Consulta la guida alla migrazione e l'app di esempio.
Consulta la guida sull'utilizzo di ViewPager2 per scorrere tra i fragment.
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 è stato rilasciato. La versione 1.0.0-beta05 contiene questi commit.
Correzioni di bug
- Correzione per
requestFocussu una pagina fuori dallo schermo che causa un cambio di pagina. Il comportamento è ora coerente con il ViewPager originale. (b/140656866) - Correzione del problema relativo a
focusche rimane su una pagina fuori schermo dopo un cambio di pagina. La messa a fuoco viene ora cancellata quando si cambia pagina. (b/140656866) - Correzione dell'ordinamento delle transazioni di
Fragmentpausa / ripristino durante il cambio di pagina (ora mettiamo sempre in pausa il vecchio elemento principale prima di ripristinare il nuovo). (b/139489059) - Correzione per
canScrollHorizontally(int)ecanScrollVertically(int): ora restituiscono se ViewPager2 può scorrere nella direzione specificata. (b/141848404) - È stato risolto un problema in SwipeRefreshLayout per migliorare il funzionamento con ViewPager2.
Versione 1.0.0-beta04
5 settembre 2019
androidx.viewpager2:viewpager2:1.0.0-beta04 è stato rilasciato. I commit inclusi in questa versione sono disponibili qui.
Correzioni di bug
- Correzione del problema relativo al caso limite di
FragmentStateAdaptercon lo stack precedente diFragment. (b/139095195) - Correzione di
EditTextcon determinate configurazioni degli attributi che causano uno scorrimento/salto di pagina durante la digitazione/la messa a fuoco. (b/138044582, b/139432498) - Correzione di un problema con le istanze
ItemDecoratione soluzione alternativa per il posizionamento dell'indicatore di overscroll. (b/139012032) - In altri componenti sono stati risolti diversi problemi per migliorare la compatibilità con
ViewPager2: RecyclerView, NestedScrollView e Navigation.
Versione 1.0.0-beta03
7 agosto 2019
androidx.viewpager2:viewpager2:1.0.0-beta03 è stato rilasciato. I commit inclusi in questa versione sono disponibili qui.
Correzioni di bug
- Correzione del problema
FragmentStateAdaptercon lo stato temporaneoFragment. b/134246546 - Correzione dei problemi relativi a
currentItemescrollStatequando un set di dati viene modificato durante uno scorrimento fluido (casi limite risolti). b/137642608 - Correzione delle animazioni di
PageTransformer(inclusoMarginPageTransformer) in conflitto con le animazioni di modifica del set di dati. b/134658996 - Correzione delle animazioni di scorrimento fluido in set di dati di grandi dimensioni (limite di valori interi
float). b/134858960
Versione 1.0.0-beta02
19 luglio 2019
androidx.viewpager2:viewpager2:1.0.0-beta02 è stato rilasciato. I commit inclusi in questa versione sono disponibili qui.
Correzioni di bug
- È stata rimossa la dipendenza jacoco involontaria introdotta in
1.0.0-beta01. (b/137782951)
Versione 1.0.0-beta01
17 luglio 2019
androidx.viewpager2:viewpager2:1.0.0-beta01 è stato rilasciato. I commit inclusi in questa versione sono disponibili qui.
Correzioni di bug
- Correzione dell'arresto anomalo di
ViewPager2.updateCurrentItemdurante lo scorrimento e l'aggiornamento del set di dati - Correzione dell'arresto anomalo di
NullPointerExceptionrelativo aViewPager2.isLayoutRtl TOUCH_SLOP_PAGINGora è un margine di errore predefinitoOnPageChangeCallbackeventi corretti per gli adattatori vuoti (pagina0anziché-1per la parità conViewPager1)
Problemi noti
- Stiamo ancora lavorando sui problemi aperti rimanenti prima di passare alla versione stabile.
Versione 1.0.0-alpha06
2 luglio 2019
androidx.viewpager2:viewpager2:1.0.0-alpha06 è stato rilasciato. I commit inclusi in questa versione sono disponibili qui.
Questa è l'ultima alpha pianificata prima del blocco dell'API e del passaggio alla beta. Forniscici un feedback sull'API.
Nuove funzionalità
- Fondamenta per una migliore accessibilità:
ACTION_PAGE_RIGHT,ACTION_PAGE_DOWNe così via.
Modifiche alle API
FragmentStateAdapter: gliFragmentnon principali sono limitati aSTARTEDe il relativomenuVisibilityè impostato su false.PageTransformer,MarginPageTransformer,CompositePageTransformer: documentazione perpositioncorretta.
Correzioni di bug
currentItemdopo la correzione della modifica del set di dati / dell'adattatore.MarginPageTransformercon problemaoffscreenPageLimitrisolto.- Comportamento delle azioni di accessibilità in
FakeDragcorretto.
Versione 1.0.0-alpha05
5 giugno 2019
androidx.viewpager2:viewpager2:1.0.0-alpha05 è stato rilasciato. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
ItemDecoratorintrodotto con un comportamento coerente conRecyclerView.MarginPageTransformerintrodotto per consentire di creare spazio tra le pagine (al di fuori del rientro della pagina).- È stato introdotto
CompositePageTransformerper consentire la combinazione di piùPageTransformer.
Modifiche alle API
- Il metodo
FragmentStateAdapter#getItemè stato rinominato inFragmentStateAdapter#createFragment. Il nome del metodo precedente si è rivelato una fonte di bug in passato. - Il valore di
OFFSCREEN_PAGE_LIMIT_DEFAULTè cambiato da0a-1. Non è necessario modificare il codice client se viene utilizzata la costanteOFFSCREEN_PAGE_LIMIT_DEFAULT.
Correzioni di bug
- È stato corretto il comportamento di
getCurrentItem()quandoSCROLL_STATE_SETTLINGviene interrotto da un trascinamento nella direzione opposta. - Risolti i problemi del caricatore di classi
FragmentStateAdapternel contesto "Non conservare le attività". - Documentazione di
setOffscreenPageLimitmigliorata.
Versione 1.0.0-alpha04
7 maggio 2019
androidx.viewpager2:viewpager2:1.0.0-alpha04 è stato rilasciato. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
offscreenPageLimit: consente un controllo rigoroso del numero di pagineView/Fragmentmantenute nella gerarchia di oggetti View
Modifiche alle API
- Gli attributi
orientationeisUserScrollablenon fanno più parte diSavedState - I metodi
saveStateerestoreStatesono stati resi finali inFragmentStateAdapter ViewPager2.OrientationeViewPager2.ScrollStateannotazioni rese non pubbliche
Correzioni di bug
SavedState: è stato risolto un problema di ripristino quandoActivityviene eliminato / ricreatoSavedState: ripristino ritardato finché l'adattatore non è impostatoOnPageChangeCallback: correzione di casi limite minori
Versione 1.0.0-alpha03
3 aprile 2019
androidx.viewpager2:viewpager2:1.0.0-alpha03 è stato rilasciato. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- Possibilità di scorrere ViewPager2 in modo programmatico:
fakeDragBy(offsetPx).
Modifiche alle API
FragmentStateAdapterora richiede un oggettoLifecycle. Sono stati aggiunti due costruttori di utilità per ottenerlo dall'hostFragmentActivityo dall'hostFragment.
Correzioni di bug
- Numerose correzioni al supporto di
Fragment:- gestione degli aggiornamenti del set di dati quando la finestra è ridotta a icona o durante la rotazione dello schermo;
- rimuovendo i frammenti irrilevanti dopo la rotazione;
- rimuovendo lo stato salvato degli elementi rimossi.
PageChangeCallback: è stato corretto il calcolo dell'offset della pagina per le pagine con margini.
Versione 1.0.0-alpha02
13 marzo 2019
androidx.viewpager2:viewpager2:1.0.0-alpha02 è stato rilasciato. L'elenco completo dei commit inclusi in questa versione è disponibile qui.
Nuove funzionalità
- Possibilità di disattivare l'input dell'utente (
setUserInputEnabled,isUserInputEnabled)
Modifiche alle API
- ViewPager2 class final
Correzioni di bug
FragmentStateAdaptercorrezioni della stabilità
Versione 1.0.0-alpha01
7 febbraio 2019
androidx.viewpager2:viewpager2 1.0.0-alpha01 è stato 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 alle API
FragmentStateAdaptersostituisceFragmentStatePagerAdapterRecyclerView.AdaptersostituiscePagerAdapterregisterOnPageChangeCallbacksostituisceaddPageChangeListener
Problemi noti
- clipToPadding
- no fakeDrag
- JavaDoc
- scorrimento nidificato parallelo all'orientamento
- Nessun controllo del limite fuori schermo
- ha bisogno di una migliore integrazione di TabLayout
- nessun setter pageWidth (forzato al 100%/100%)
- page transformer: nessuna scelta di livello hardware/software; nessun ordine di disegno inverso
- mantieni l'elemento corrente visibile quando inserisci una pagina prima di quella corrente
- La navigazione da tastiera richiede interventi
- Miglioramenti della stabilità / delle prestazioni di
FragmentStateAdapterin arrivo