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-rc01ou version ultérieure. ViewPager2renseigne désormais correctement les élémentsCollectionInfoetCollectionItemInfoqui ne sont plus renseignés par défaut par RecyclerView1.2.0-alpha02ou les versions ultérieures.- Ajout de l'interface 
FragmentTransactionCallbackpour écouter les modifications du cycle de vie des fragments qui se produisent dansFragmentStateAdapter. - Correction d'un problème de 
FragmentStateAdapterqui 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 
WindowInsetsest 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) ViewPager2n'essaie plus de corriger la distributionWindowInsetsdé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'ViewPager2doivent passer à la versionRecyclerView1.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 
FragmentTransactionCallbackpour écouter les modifications du cycle de vie des fragments qui se produisent dansFragmentStateAdapter. (Ibda77) 
Corrections de bugs
- Correction d'un problème de 
FragmentStateAdapterqui 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 collectionFragmentsous-jacente). - Animations de modification de l'ensemble de données (y compris 
DiffUtil). 
 - Migration simplifiée à partir de l'implémentation 
ViewPagerpré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 
requestFocussur 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 
FragmentStateAdapteravec la pile "Retour" deFragment. (b/139095195) - Correction de 
EditTextavec 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 
ItemDecorationet 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 
FragmentStateAdapteravec l'étatFragmenttemporaire. b/134246546 - Correction des problèmes de 
currentItemet descrollStatelorsqu'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 
floatentiers). 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.updateCurrentItemlors du défilement et de la mise à jour de l'ensemble de données. - Correction du plantage de 
NullPointerExceptionen lien avecViewPager2.isLayoutRtl. TOUCH_SLOP_PAGING: nouvelle pente tactile par défaut.- Événements 
OnPageChangeCallbackcorrigés pour les adaptateurs vides (page0au lieu de-1pour 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émentsFragmentnon principaux sont limités àSTARTEDet leurmenuVisibilityest défini sur "false".PageTransformer,MarginPageTransformer,CompositePageTransformer: correction de la documentation pourposition.
Corrections de bugs
currentItemaprès la modification de l'ensemble de données ou la modification de l'adaptateur.- Résolution du problème affectant 
MarginPageTransformeravecoffscreenPageLimit. - 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
ItemDecoratorintroduit un comportement cohérent avecRecyclerView.MarginPageTransformerintroduit pour permettre l'ajout d'un espace entre les pages (en dehors du relief intérieur).CompositePageTransformerfourni pour permettre de combiner plusieursPageTransformer.
Modifications apportées à l'API
- La méthode 
FragmentStateAdapter#getItema été renomméeFragmentStateAdapter#createFragment. L'ancien nom de la méthode était autrefois à l'origine de certains bugs. - La valeur de 
OFFSCREEN_PAGE_LIMIT_DEFAULTest passée de0à-1. Pas besoin de modifier le code client si la constanteOFFSCREEN_PAGE_LIMIT_DEFAULTest utilisée. 
Corrections de bugs
- Correction du comportement de 
getCurrentItem()lorsqueSCROLL_STATE_SETTLINGest interrompu par un déplacement dans la direction opposée. - Correction de problèmes liés au chargeur de la classe 
FragmentStateAdapterdans 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 deViewet deFragmentconservés dans la hiérarchie des vues.
Modifications apportées à l'API
- Les attributs 
orientationetisUserScrollablene font plus partie deSavedState. - Les méthodes 
saveStateetrestoreStateont été finalisées dansFragmentStateAdapter. - Les annotations 
ViewPager2.OrientationetViewPager2.ScrollStatene 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
FragmentStateAdapternécessite désormais un objetLifecycle. Deux constructeurs utilitaires ont été ajoutés pour l'obtenir à partir de l'hôteFragmentActivityou 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
 notifyDataSetChangedentièrement fonctionnel (bugs VP1 corrigés)
 
Modifications apportées à l'API
- Remplacement de 
FragmentStatePagerAdapterparFragmentStateAdapter. - Remplacement de 
PagerAdapterparRecyclerView.Adapter. registerOnPageChangeCallbackremplaceaddPageChangeListener.
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.