ViewPager2
Dernière mise à jour | Version stable | Version finale | Version bêta | Version alpha |
---|---|---|---|---|
14 mai 2024 | 1.1.0 | - | - | - |
Dépendances AndroidX
Pour utiliser ViewPager2
, ajoutez la dépendance AndroidX suivante au fichier build.gradle
de votre projet :
Groovy
dependencies { implementation "androidx.viewpager2:viewpager2:1.1.0" }
Kotlin
dependencies { implementation("androidx.viewpager2:viewpager2:1.1.0") }
Commentaires
Vos commentaires nous aident à améliorer Jetpack. N'hésitez pas à nous contacter si vous découvrez de nouveaux problèmes ou si vous avez des idées pour améliorer cette bibliothèque. Veuillez consulter les problèmes existants de cette bibliothèque avant d'en signaler un nouveau. Vous pouvez ajouter votre vote à un problème existant en cliquant sur le bouton en forme d'étoile.
Pour en savoir plus, consultez la documentation sur l'outil Issue Tracker.
Version 1.1.0
Version 1.1.0
14 mai 2024
Publication d'androidx.viewpager2:viewpager2:1.1.0
. La version 1.1.0 contient ces commits.
Modifications importantes depuis la version 1.0.0
- Corrige les plantages lors de l'utilisation de RecyclerView
1.3.1-rc01
ou version ultérieure. ViewPager2
renseigne désormais correctement les élémentsCollectionInfo
etCollectionItemInfo
qui ne sont plus renseignés par défaut par RecyclerView1.2.0-alpha02
ou les versions ultérieures.- Ajout de l'interface
FragmentTransactionCallback
pour écouter les modifications du cycle de vie des fragments qui se produisent dansFragmentStateAdapter
. - Correction d'un problème de
FragmentStateAdapter
qui concerne la visibilité initiale du menu de fragment lors de l'ajout d'un fragment àFragmentManager
. - Correction de l'envoi des encarts de fenêtre: toutes les pages reçoivent désormais les mêmes encarts. En raison de la façon dont
WindowInsets
est distribué sur les anciennes versions d'API (< API 30) qui peuvent empêcher les encarts d'être disponibles pour les vues sœurs, vous devez activer ce correctif viaWindowInsetsApplier.install(viewPager2)
si vous souhaitez appliquer des encarts sur les appareils équipés d'une version d'API antérieure à la version 30.
Version 1.1.0-rc01
1er mai 2024
androidx.viewpager2:viewpager2:1.1.0-rc01
est publié sans modification notable depuis la version 1.1.0-beta02. La version 1.1.0-rc01 contient ces commits.
Version 1.1.0-beta02
24 mai 2023
Publication d'androidx.viewpager2:viewpager2:1.1.0-beta02
. Liste des commits de la version 1.1.0-beta02
Modifications apportées à l'API
- Ajout de rappels d'enregistrement de l'état du fragment à
FragmentTransactionCallback
. (I45b90) ViewPager2
n'essaie plus de corriger la distributionWindowInsets
défectueuse des anciennes versions d'API (< 30), car la correction elle-même peut être nuisible aux frères et sœurs deViewPager2
. Le correctif est toujours disponible, mais il est désormais facultatif afin que les développeurs puissent décider au cas par cas. Activez le correctif en appelantWindowInsetsApplier.install(viewPager2))
. (Ic9a85)
Correction de bugs
- Correction des problèmes de compatibilité avec les versions plus récentes de
RecyclerView
. Les utilisateurs de cette version d'ViewPager2
doivent passer à la versionRecyclerView
1.3.1-rc01 ou ultérieure.
Version 1.1.0-beta01
4 août 2021
Publication d'androidx.viewpager2:viewpager2:1.1.0-beta01
. Liste des commits de la version 1.1.0-beta01
Modifications apportées à l'API
Mise à jour d'AndroidX pour utiliser Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Ciblage de Java 8 pour toutes les bibliothèques AndroidX (2923f39)
Corrections de bugs
- Correction de l'envoi des encarts, toutes les pages ont désormais les mêmes encarts. (I47fef)
Version 1.1.0-alpha01
1er avril 2020
Publication d'androidx.viewpager2:viewpager2:1.1.0-alpha01
. Liste des commits de la version 1.1.0-alpha01
Cette version accompagne un changement dans RecyclerView 1.2.0-alpha02, via l'ajout de CollectionInfo
et CollectionItemInfo
, qui ne sont plus fournis par défaut par RecyclerView
. Lorsque vous passez à RecyclerView 1.2.0-alpha02
, mettez également à jour ViewPager2
pour empêcher les régressions d'accessibilité.
Nouvelles fonctionnalités
- Ajout de l'interface
FragmentTransactionCallback
pour écouter les modifications du cycle de vie des fragments qui se produisent dansFragmentStateAdapter
. (Ibda77)
Corrections de bugs
- Correction d'un problème de
FragmentStateAdapter
qui concerne la visibilité initiale du menu de fragment lors de l'ajout d'un fragment àFragmentManager
. (I9d2ff, b/144442240)
Version 1.0.0
Version 1.0.0
20 novembre 2019
Publication de androidx.viewpager2:viewpager2:1.0.0
sans aucune modification par rapport à la version 1.0.0-rc01. Liste des commits de la version 1.0.0
Principales fonctionnalités de la version 1.0.0
- Améliorations de l'implémentation précédente de ViewPager :
- Compatibilité avec l'orientation de droite à gauche
- Prise en charge de l'orientation verticale
- Prise en charge fiable de
Fragment
(y compris la gestion des modifications apportées à la collectionFragment
sous-jacente). - Animations de modification de l'ensemble de données (y compris
DiffUtil
).
- Migration simplifiée à partir de l'implémentation
ViewPager
précédente (parité d'API si possible). Consultez le guide de migration et l'application exemple.
Consultez le guide d'utilisation de ViewPager2 pour découvrir comment faire glisser les fragments.
Version 1.0.0-rc01
23 octobre 2019
Publication d'androidx.viewpager2:viewpager2:1.0.0-rc01
sans aucune modification par rapport à la version 1.0.0-beta05
. Liste des commits de la version 1.0.0-rc01
Version 1.0.0-beta05
9 octobre 2019
Publication d'androidx.viewpager2:viewpager2:1.0.0-beta05
. Liste des commits de la version 1.0.0-beta05
Corrections de bugs
- Correction d'un problème de changement de page au niveau de
requestFocus
sur une page hors écran. Le comportement est désormais cohérent avec celui de l'outil ViewPager d'origine. (b/140656866) - Correction de
focus
, qui restait sur une page hors écran après un changement de page. Le curseur est maintenant effacé lors d'un changement de page. (b/140656866) - Correction de l'ordre des transactions de
Fragment
(suspendre/reprendre) lors du changement de page (nous suspendons toujours l'ancien élément principal avant de réactiver le nouvel élément). (b/139489059) - Correction de
canScrollHorizontally(int)
et decanScrollVertically(int)
: ils renvoient désormais l'affichage du défilement de la page (ViewPager2) dans la direction donnée. (b/141848404) - Un problème a été résolu dans SlideRefreshLayout pour améliorer son fonctionnement avec ViewPager2.
Version 1.0.0-beta04
5 septembre 2019
Publication d'androidx.viewpager2:viewpager2:1.0.0-beta04
. Les commits inclus dans cette version sont disponibles sur cette page.
Corrections de bugs
- Correction d'un problème spécifique au niveau de
FragmentStateAdapter
avec la pile "Retour" deFragment
. (b/139095195) - Correction de
EditText
avec certaines configurations d'attribut qui entraînaient un saut de page/défilement lors de la saisie/sélection. (b/138044582, b/139432498) - Correction d'un problème lié aux instances
ItemDecoration
et solution de contournement pour le positionnement de l'indicateur avec défilement hors limites. (b/139012032) - Un certain nombre de problèmes ont été résolus dans d'autres composants pour mieux fonctionner avec
ViewPager2
: RecyclerView, Nested ScrollView et Navigation.
Version 1.0.0-beta03
7 août 2019
Publication d'androidx.viewpager2:viewpager2:1.0.0-beta03
. Les commits inclus dans cette version sont disponibles sur cette page.
Corrections de bugs
- Correction d'un problème de
FragmentStateAdapter
avec l'étatFragment
temporaire. b/134246546 - Correction des problèmes de
currentItem
et descrollState
lorsqu'un ensemble de données est modifié pendant un défilement fluide (traitement des cas particuliers). b/137642608 - Correction de l'erreur liée aux animations
PageTransformer
(y comprisMarginPageTransformer
) et aux animations de modification de l'ensemble de données. b/134658996 - Correction des animations de défilement fluide dans les ensembles de données volumineux (limite de
float
entiers). b/134858960
Version 1.0.0-beta02
19 juillet 2019
Publication d'androidx.viewpager2:viewpager2:1.0.0-beta02
. Les commits inclus dans cette version sont disponibles sur cette page.
Correction de bugs
- Suppression de la dépendance JaCoCo non intentionnelle introduite dans
1.0.0-beta01
. (b/137782951)
Version 1.0.0-beta01
17 juillet 2019
Publication d'androidx.viewpager2:viewpager2:1.0.0-beta01
. Les commits inclus dans cette version sont disponibles sur cette page.
Corrections de bugs
- Correction du plantage de
ViewPager2.updateCurrentItem
lors du défilement et de la mise à jour de l'ensemble de données. - Correction du plantage de
NullPointerException
en lien avecViewPager2.isLayoutRtl
. TOUCH_SLOP_PAGING
: nouvelle pente tactile par défaut.- Événements
OnPageChangeCallback
corrigés pour les adaptateurs vides (page0
au lieu de-1
pour s'aligner avecViewPager1
)
Problèmes connus
- Nous travaillons encore sur les problèmes non résolus avant de passer à la version stable.
Version 1.0.0-alpha06
2 juillet 2019
Publication d'androidx.viewpager2:viewpager2:1.0.0-alpha06
. Les commits inclus dans cette version sont disponibles sur cette page.
Il s'agit de la dernière version alpha prévue avant la fixation de l'API et le passage à la version bêta. N'hésitez pas à nous faire part de vos commentaires sur l'API.
Nouvelles fonctionnalités
- Principes de base pour une meilleure accessibilité :
ACTION_PAGE_RIGHT
,ACTION_PAGE_DOWN
, etc.
Modifications apportées à l'API
FragmentStateAdapter
: les élémentsFragment
non principaux sont limités àSTARTED
et leurmenuVisibility
est défini sur "false".PageTransformer
,MarginPageTransformer
,CompositePageTransformer
: correction de la documentation pourposition
.
Corrections de bugs
currentItem
après la modification de l'ensemble de données ou la modification de l'adaptateur.- Résolution du problème affectant
MarginPageTransformer
avecoffscreenPageLimit
. - Correction des actions d'accessibilité dans le comportement de
FakeDrag
.
Version 1.0.0-alpha05
5 juin 2019
Publication d'androidx.viewpager2:viewpager2:1.0.0-alpha05
. Les commits inclus dans cette version sont disponibles sur cette page.
Nouvelles fonctionnalités
ItemDecorator
introduit un comportement cohérent avecRecyclerView
.MarginPageTransformer
introduit pour permettre l'ajout d'un espace entre les pages (en dehors du relief intérieur).CompositePageTransformer
fourni pour permettre de combiner plusieursPageTransformer
.
Modifications apportées à l'API
- La méthode
FragmentStateAdapter#getItem
a été renomméeFragmentStateAdapter#createFragment
. L'ancien nom de la méthode était autrefois à l'origine de certains bugs. - La valeur de
OFFSCREEN_PAGE_LIMIT_DEFAULT
est passée de0
à-1
. Pas besoin de modifier le code client si la constanteOFFSCREEN_PAGE_LIMIT_DEFAULT
est utilisée.
Corrections de bugs
- Correction du comportement de
getCurrentItem()
lorsqueSCROLL_STATE_SETTLING
est interrompu par un déplacement dans la direction opposée. - Correction de problèmes liés au chargeur de la classe
FragmentStateAdapter
dans le contexte "Ne pas conserver les activités". - Amélioration de la documentation
setOffscreenPageLimit
.
Version 1.0.0-alpha04
7 mai 2019
Publication d'androidx.viewpager2:viewpager2:1.0.0-alpha04
. Les commits inclus dans cette version sont disponibles sur cette page.
Nouvelles fonctionnalités
offscreenPageLimit
: permet de contrôler étroitement le nombre deView
et deFragment
conservés dans la hiérarchie des vues.
Modifications apportées à l'API
- Les attributs
orientation
etisUserScrollable
ne font plus partie deSavedState
. - Les méthodes
saveState
etrestoreState
ont été finalisées dansFragmentStateAdapter
. - Les annotations
ViewPager2.Orientation
etViewPager2.ScrollState
ne sont pas publiques.
Corrections de bugs
SavedState
: correction du problème de restauration en cas de destruction / recréation deActivity
.SavedState
: restauration retardée jusqu'à ce que l'adaptateur soit défini.OnPageChangeCallback
: corrections mineures de certaines cas particuliers.
Version 1.0.0-alpha03
3 avril 2019
Publication d'androidx.viewpager2:viewpager2:1.0.0-alpha03
. Les commits inclus dans cette version sont disponibles sur cette page.
Nouvelles fonctionnalités
- Possibilité de faire défiler le composant ViewPager2 de manière automatisée :
fakeDragBy(offsetPx)
.
Modifications apportées à l'API
FragmentStateAdapter
nécessite désormais un objetLifecycle
. Deux constructeurs utilitaires ont été ajoutés pour l'obtenir à partir de l'hôteFragmentActivity
ou de l'hôteFragment
.
Corrections de bugs
- Nombreux correctifs de prise en charge de
Fragment
:- gestion des mises à jour de l'ensemble de données lorsque celui-ci est réduit ou pendant la rotation de l'écran ;
- suppression des fragments non pertinents après la rotation ;
- suppression de l'état enregistré des éléments supprimés.
PageChangeCallback
: calcul du décalage de page fixe pour les pages comportant des marges.
Version 1.0.0-alpha02
13 mars 2019
Publication d'androidx.viewpager2:viewpager2:1.0.0-alpha02
. La liste complète des commits inclus dans cette version est disponible sur cette page.
Nouvelles fonctionnalités
- Possibilité de désactiver l'entrée utilisateur (
setUserInputEnabled
,isUserInputEnabled
).
Modifications apportées à l'API
- Ajout de "class final" pour ViewPager2
Corrections de bugs
- Améliorations de la stabilité de
FragmentStateAdapter
.
Version 1.0.0-alpha01
7 février 2019
Publication d'androidx.viewpager2:viewpager2 1.0.0-alpha01
. Il s'agit de la première version de ViewPager2.
Nouvelles fonctionnalités
- Par rapport à son prédécesseur
android.support.v4.view.ViewPager
(VP1) :- Compatibilité avec la mise en page de droite à gauche
- Prise en charge de l'orientation verticale
notifyDataSetChanged
entièrement fonctionnel (bugs VP1 corrigés)
Modifications apportées à l'API
- Remplacement de
FragmentStatePagerAdapter
parFragmentStateAdapter
. - Remplacement de
PagerAdapter
parRecyclerView.Adapter
. registerOnPageChangeCallback
remplaceaddPageChangeListener
.
Problèmes connus
- clipToPadding
- pas de fakeDrag
- JavaDoc
- défilement imbriqué parallèle à l'orientation
- aucun contrôle des limites hors écran
- nécessite une meilleure intégration de TabLayout
- aucun setter pour pageWidth (forcé à 100 %/100 %)
- Transformateur de page : pas de choix de couche matérielle/logicielle ; aucun ordre de dessin inversé
- garder l'élément actuel visible lorsque vous insérez une page avant la page actuelle
- la navigation au clavier nécessite des améliorations
- Amélioration de la stabilité et des performances de
FragmentStateAdapter
.