ViewPager2

Visualizza le visualizzazioni o i frammenti in un formato scorrevole.
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.

Creare un nuovo problema

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 correttamente CollectionInfo e CollectionItemInfo, che RecyclerView 1.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 di FragmentStateAdapter.
  • È stato risolto il problema FragmentStateAdapter relativo alla visibilità del menu del frammento iniziale quando si aggiunge un frammento al FragmentManager.
  • È 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 tramite WindowInsetsApplier.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'invio WindowInsets non 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 di ViewPager2 devono eseguire l'aggiornamento ad almeno RecyclerView 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

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 di FragmentStateAdapter. (Ibda77)

Correzioni di bug

  • È stato risolto il problema FragmentStateAdapter relativo alla visibilità del menu del frammento iniziale durante l'aggiunta di un frammento a FragmentManager. (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 raccolta Fragment 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) e canScrollVertically(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 ritorno Fragment. (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 transitorio Fragment. b/134246546
  • Correzione dei problemi currentItem e scrollState quando un set di dati viene modificato durante uno scorrimento fluido (casi limite risolti). b/137642608
  • Correzione per le animazioni di PageTransformer (incluso MarginPageTransformer) 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 a ViewPager2.isLayoutRtl
  • TOUCH_SLOP_PAGING ora è un valore predefinito per la tolleranza al tocco
  • Eventi OnPageChangeCallback corretti per gli adattatori vuoti (pagina 0 anziché -1 per parità con ViewPager1)

Problemi noti

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 elementi Fragment non principali sono limitati a STARTED e il relativo menuVisibility è impostato su false.
  • PageTransformer, MarginPageTransformer, CompositePageTransformer: documentazione per positioncorretta.

Correzioni di bug

  • currentItem dopo la modifica del set di dati / la modifica dell'adattatore è stata corretta.
  • MarginPageTransformer con offscreenPageLimit 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 con RecyclerView.
  • 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 in FragmentStateAdapter#createFragment perché il nome precedente si è dimostrato fonte di bug in passato.
  • Il valore OFFSCREEN_PAGE_LIMIT_DEFAULT è passato da 0 a -1. Non è necessaria alcuna modifica al codice client se viene utilizzata la costante OFFSCREEN_PAGE_LIMIT_DEFAULT.

Correzioni di bug

  • Il comportamento di getCurrentItem() è stato corretto quando SCROLL_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 di View / Fragment di pagina conservati nella gerarchia delle visualizzazioni

Modifiche alle API

  • Gli attributi orientation e isUserScrollable non fanno più parte di SavedState
  • I metodi saveState e restoreState sono stati definiti definitivi a FragmentStateAdapter
  • Annotazioni di ViewPager2.Orientation e ViewPager2.ScrollState non rese pubbliche

Correzioni di bug

  • SavedState: è stato risolto un problema di ripristino quando Activity viene 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

  • FragmentStateAdapter ora richiede un oggetto Lifecycle. Sono stati aggiunti due costruttori di utilità per ottenerlo dall'host FragmentActivity o 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

  • 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 sostituisce FragmentStatePagerAdapter
  • RecyclerView.Adapter sostituisce PagerAdapter
  • registerOnPageChangeCallback sostituisce 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
  • FragmentStateAdapter Miglioramenti della stabilità / delle prestazioni in arrivo