ViewPager2

Visualizza visualizzazioni o frammenti in formato a scorrimento.
Aggiornamento più recente Release stabile Candidato per la release Versione 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 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

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

  • Corregge gli arresti anomali quando viene utilizzato con RecyclerView 1.3.1-rc01 o versioni successive.
  • Ora ViewPager2 compila correttamente i campi CollectionInfo e CollectionItemInfo che per impostazione predefinita non vengono più compilati con RecyclerView 1.2.0-alpha02 e nelle versioni successive.
  • È stata aggiunta l'interfaccia FragmentTransactionCallback per ascoltare le modifiche al 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 durante l'aggiunta di un frammento a FragmentManager.
  • Correzione dell'invio dei riquadri delle finestre: tutte le pagine ora hanno gli stessi riquadri. A causa del modo in cui gli WindowInsets vengono inviati nelle versioni API precedenti (< API 30) che possono impedire la disponibilità degli insiemi per le viste gemelle, devi attivare questa correzione tramite WindowInsetsApplier.install(viewPager2) se vuoi applicare insiemi su dispositivi con meno di API 30.

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