ViewPager2

Visualizza visualizzazioni o frammenti in formato a scorrimento.
Aggiornamento più recente Release stabile Candidato per la release Versione beta Release alpha
1° maggio 2024 1.0.0 1.1.0-rc01 - -

Dipendenze AndroidX

Per utilizzare ViewPager2, aggiungi la seguente dipendenza AndroidX al file build.gradle del tuo progetto:

Trendy

dependencies {
    implementation "androidx.viewpager2:viewpager2:1.0.0"
}

Kotlin

dependencies {
    implementation("androidx.viewpager2:viewpager2:1.0.0")
}

Feedback

Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se rilevi nuovi problemi o hai idee per migliorare la libreria. Dai un'occhiata ai problemi esistenti in questa libreria prima di crearne una nuova. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.

Crea un nuovo problema

Per ulteriori informazioni, consulta la documentazione di Issue Tracker.

Versione 1.1.0

Versione 1.1.0-rc01

1° maggio 2024

androidx.viewpager2:viewpager2:1.1.0-rc01 viene rilasciato senza modifiche degne di nota dalla 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 viene rilasciato. La versione 1.1.0-beta02 contiene questi commit.

Modifiche alle API

  • Callback di salvataggio dello stato del frammento aggiunti a FragmentTransactionCallback. (I45b90)
  • Ora ViewPager2 non tenta più di correggere l'invio non valido di WindowInsets delle versioni API precedenti (< 30), perché la correzione stessa può essere dannosa per i fratelli di ViewPager2. La correzione è ancora disponibile, ma è diventata un'opzione da attivare, in modo che gli sviluppatori possano decidere caso per caso. Attiva la correzione chiamando il numero WindowInsetsApplier.install(viewPager2)). (Ic9a85).

Correzioni di bug

  • Risolvi 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

androidx.viewpager2:viewpager2:1.1.0-beta01 viene rilasciato. La versione 1.1.0-beta01 contiene questi commit.

Modifiche alle API

Correzioni di bug

  • Correzione dell'invio dei set di finestre, ora tutte le pagine hanno 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 accompagna una modifica in RecyclerView 1.2.0-alpha02 mediante il completamento 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 FragmentTransactionCallback per ascoltare le modifiche al 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 dalla 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 per l'orientamento verticale
    • Assistenza Fragment affidabile (inclusa la gestione delle modifiche alla raccolta Fragment sottostante)
    • Animazioni per le modifiche del set di dati (compresa l'assistenza DiffUtil)
  • Migrazione facile dalla precedente implementazione di ViewPager (parità API, ove possibile). Consulta la guida alla migrazione e l'app di esempio.

Consulta la guida sull'uso 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 di requestFocus in una pagina fuori schermo che causa un cambio di pagina. Il comportamento è ora coerente con quello del ViewPager originale. (b/140656866)
  • Correzione del problema di focus che rimaneva su una pagina fuori schermo dopo un cambio di pagina. Quando cambi pagina, lo stato attivo viene ora cancellato. (b/140656866)
  • Correzione dell'ordine di Fragment in pausa / ripresa delle transazioni quando si cambia la 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 in ScorriAggiornaLayout 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 problema relativo a FragmentStateAdapter maiuscole e minuscole con stack precedente Fragment. (b/139095195)
  • Correzione di EditText con determinate configurazioni degli attributi che causano lo scorrimento o il salto di pagina durante la digitazione/lo stato attivo. (b/138044582, b/139432498)
  • Correzione di un problema con le istanze ItemDecoration e di una soluzione alternativa per il posizionamento dell'indicatore di scorrimento orizzontale. (b/139012032)
  • Per un funzionamento ottimale con ViewPager2, sono stati risolti diversi problemi in altri componenti: RecyclerView, NestedScorriView e Navigazione.

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 con lo stato Fragment temporaneo. b/134246546
  • Correzione dei problemi currentItem e scrollState relativi alla modifica di un set di dati durante lo scorrimento fluido (casi limite risolti). b/137642608
  • Correzione delle animazioni PageTransformer (incluso MarginPageTransformer) in conflitto con le animazioni di modifica del set di dati. b/134658996
  • Correzione per le animazioni a 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 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 viene rilasciato. I commit inclusi in questa versione sono disponibili qui.

Correzioni di bug

  • Correzione dell'arresto anomalo 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'inattività di tocco predefinita
  • OnPageChangeCallback eventi corretti per gli adattatori vuoti (pagina 0 anziché -1 per la 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 fase alpha pianificata prima di bloccare l'API e passare alla versione beta. Ti invitiamo a fornirci un feedback sull'API.

Nuove funzionalità

  • Nozioni di base per una migliore accessibilità: ACTION_PAGE_RIGHT, ACTION_PAGE_DOWN ecc.

Modifiche alle API

  • FragmentStateAdapter: gli elementi Fragment non principali sono limitati a STARTED e il loro menuVisibility è impostato su false.
  • PageTransformer, MarginPageTransformer, CompositePageTransformer: documentazione per positioncorretta.

Correzioni di bug

  • currentItem dopo la modifica del set di dati o dell'adattatore.
  • MarginPageTransformer con offscreenPageLimit problema risolto.
  • Comportamento delle azioni di accessibilità in FakeDrag corretto.

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 introdotto con un comportamento coerente con RecyclerView.
  • MarginPageTransformer introdotto per offrire la possibilità di creare spazio tra le pagine (all'esterno del riquadro di pagina).
  • Introduzione di CompositePageTransformer per offrire la possibilità di combinare più PageTransformer.

Modifiche alle API

  • Il metodo FragmentStateAdapter#getItem è stato rinominato in FragmentStateAdapter#createFragment. In passato, il nome del metodo precedente ha dimostrato di essere fonte di bug.
  • Valore di OFFSCREEN_PAGE_LIMIT_DEFAULT cambiato da 0 a -1. Non è necessario modificare il codice client se viene OFFSCREEN_PAGE_LIMIT_DEFAULTutilizzata la costante.

Correzioni di bug

  • Il comportamento di getCurrentItem() è stato corretto quando SCROLL_STATE_SETTLING viene interrotto da una trascinamento nella direzione opposta.
  • FragmentStateAdapter problemi del caricatore di classi risolti nel contesto "Non mantenere 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 pagine View / Fragment mantenute nella gerarchia di visualizzazione

Modifiche alle API

  • Gli attributi orientation e isUserScrollable non fanno più parte di SavedState
  • Metodi saveState e restoreState resi definitivi in FragmentStateAdapter
  • Annotazioni ViewPager2.Orientation e ViewPager2.ScrollState rese non pubbliche

Correzioni di bug

  • SavedState: è stato risolto un problema relativo al ripristino quando Activity viene eliminato / ricreato
  • SavedState: ripristino ritardato fino all'impostazione dell'adattatore
  • OnPageChangeCallback: casi limite minori corretti

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 far scorrere ViewPager2 in modo programmatico: fakeDragBy(offsetPx).

Modifiche alle API

  • FragmentStateAdapter ora richiede un oggetto Lifecycle. Sono stati aggiunti due costruttori di utilità per ottenerla dall'host FragmentActivity o dall'host Fragment.

Correzioni di bug

  • Numerose correzioni relative all'assistenza Fragment:
    • gestire gli aggiornamenti dei set di dati minimizzati o durante una rotazione dello schermo;
    • rimozione di frammenti irrilevanti dopo la rotazione;
    • rimuovendo lo stato salvato degli elementi rimossi.
  • PageChangeCallback: calcolo dell'offset di pagina fisso per le pagine con 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 alle API

  • Classe ViewPager2 finale

Correzioni di bug

  • FragmentStateAdapter correzioni di 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à

  • Confronto con il predecessore android.support.v4.view.ViewPager (VP1):
    • Supporto del layout da destra a sinistra (RTL)
    • Supporto per l'orientamento verticale
    • notifyDataSetChanged completamente funzionante (bug VP1 risolti)

Modifiche alle API

  • FragmentStateAdapter sostituisce FragmentStatePagerAdapter
  • RecyclerView.Adapter sostituisce PagerAdapter
  • registerOnPageChangeCallback sostituisce addPageChangeListener

Problemi noti

  • clipToPadding
  • nessun falsoTrascina
  • JavaDoc
  • scorrimento nidificato parallelo all'orientamento
  • controllo limite fuori schermo
  • richiede una migliore integrazione TabLayout
  • nessun parametro di larghezza della pagina (100%/100% forzato)
  • Transformer di pagina: nessun livello di scelta per il livello hardware/software; nessun ordine di disegno inverso
  • mantiene visibile l'elemento corrente durante l'inserimento di una pagina prima di quello corrente
  • La navigazione da tastiera richiede interventi
  • FragmentStateAdapter miglioramenti di stabilità / prestazioni in arrivo