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éments- CollectionInfoet- CollectionItemInfoqui ne sont plus renseignés par défaut par RecyclerView- 1.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 distribution- WindowInsetsdéfectueuse des anciennes versions d'API (< 30), car la correction elle-même peut être nuisible aux frères et sœurs de- ViewPager2. 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 appelant- WindowInsetsApplier.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éments- Fragmentnon principaux sont limités à- STARTEDet leur- menuVisibilityest défini sur "false".
- PageTransformer,- MarginPageTransformer,- CompositePageTransformer: correction de la documentation pour- position.
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 avec- RecyclerView.
- MarginPageTransformerintroduit pour permettre l'ajout d'un espace entre les pages (en dehors du relief intérieur).
- CompositePageTransformerfourni pour permettre de combiner plusieurs- PageTransformer.
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 de- Viewet de- Fragmentconservé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 de- Activity.
- 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 objet- Lifecycle. Deux constructeurs utilitaires ont été ajoutés pour l'obtenir à partir de l'hôte- FragmentActivityou de l'hôte- Fragment.
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.
- registerOnPageChangeCallbackremplace- addPageChangeListener.
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.
