ViewPager2
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.
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 campiCollectionInfo
eCollectionItemInfo
che per impostazione predefinita non vengono più compilati con RecyclerView1.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 diFragmentStateAdapter
. - È stato risolto il problema
FragmentStateAdapter
relativo alla visibilità del menu del frammento iniziale durante l'aggiunta di un frammento aFragmentManager
. - 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 tramiteWindowInsetsApplier.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 diWindowInsets
delle versioni API precedenti (< 30), perché la correzione stessa può essere dannosa per i fratelli diViewPager2
. 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 numeroWindowInsetsApplier.install(viewPager2))
. (Ic9a85).
Correzioni di bug
- Risolvi i problemi di compatibilità con le versioni più recenti di
RecyclerView
. Gli utenti di questa versione diViewPager2
devono eseguire l'aggiornamento ad almenoRecyclerView
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
Esegui l'upgrade di Androidx per utilizzare Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Passa a Java 8 target per tutte le librerie Androidx (2923f39)
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 diFragmentStateAdapter
. (Ibda77)
Correzioni di bug
- È stato risolto il problema
FragmentStateAdapter
relativo 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 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 raccoltaFragment
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)
ecanScrollVertically(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 precedenteFragment
. (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 statoFragment
temporaneo. b/134246546 - Correzione dei problemi
currentItem
escrollState
relativi alla modifica di un set di dati durante lo scorrimento fluido (casi limite risolti). b/137642608 - Correzione delle animazioni
PageTransformer
(inclusoMarginPageTransformer
) 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 aViewPager2.isLayoutRtl
TOUCH_SLOP_PAGING
ora è un'inattività di tocco predefinitaOnPageChangeCallback
eventi corretti per gli adattatori vuoti (pagina0
anziché-1
per la parità conViewPager1
)
Problemi noti
- Stiamo ancora lavorando sui problemi ancora da risolvere prima di passare al canale 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 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 elementiFragment
non principali sono limitati aSTARTED
e il loromenuVisibility
è impostato su false.PageTransformer
,MarginPageTransformer
,CompositePageTransformer
: documentazione perposition
corretta.
Correzioni di bug
currentItem
dopo la modifica del set di dati o dell'adattatore.MarginPageTransformer
conoffscreenPageLimit
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 conRecyclerView
.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 inFragmentStateAdapter#createFragment
. In passato, il nome del metodo precedente ha dimostrato di essere fonte di bug. - Valore di
OFFSCREEN_PAGE_LIMIT_DEFAULT
cambiato da0
a-1
. Non è necessario modificare il codice client se vieneOFFSCREEN_PAGE_LIMIT_DEFAULT
utilizzata la costante.
Correzioni di bug
- Il comportamento di
getCurrentItem()
è stato corretto quandoSCROLL_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 pagineView
/Fragment
mantenute nella gerarchia di visualizzazione
Modifiche alle API
- Gli attributi
orientation
eisUserScrollable
non fanno più parte diSavedState
- Metodi
saveState
erestoreState
resi definitivi inFragmentStateAdapter
- Annotazioni
ViewPager2.Orientation
eViewPager2.ScrollState
rese non pubbliche
Correzioni di bug
SavedState
: è stato risolto un problema relativo al ripristino quandoActivity
viene eliminato / ricreatoSavedState
: ripristino ritardato fino all'impostazione dell'adattatoreOnPageChangeCallback
: 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 oggettoLifecycle
. Sono stati aggiunti due costruttori di utilità per ottenerla dall'hostFragmentActivity
o dall'hostFragment
.
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
sostituisceFragmentStatePagerAdapter
RecyclerView.Adapter
sostituiscePagerAdapter
registerOnPageChangeCallback
sostituisceaddPageChangeListener
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