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.