Est-il possible d'activer/désactiver le swiping dans le nouvel Android ? viewpager2
composant ?
Parfait. Maintenant je peux avoir un fragment de carte et le faire défiler et utiliser le swiping pour les autres fragments.
Est-il possible d'activer/désactiver le swiping dans le nouvel Android ? viewpager2
composant ?
Il est maintenant possible d'activer ou de désactiver le swiping. viewpager2
en utilisant Version 1.0.0-alpha02
Utilisez implementation 'androidx.viewpager2:viewpager2:1.0.0-alpha02'
Nouvelles fonctionnalités
setUserInputEnabled
, isUserInputEnabled
)Changements d'API
ViewPager2
classe finaleCorrection de bogues
FragmentStateAdapter
corrections de stabilitéEXEMPLE DE CODE pour désactiver le swiping dans le viewpager2
myViewPager2.setUserInputEnabled(false);
EXEMPLE DE CODE pour activer le swiping dans le viewpager2
myViewPager2.setUserInputEnabled(true);
Parfait. Maintenant je peux avoir un fragment de carte et le faire défiler et utiliser le swiping pour les autres fragments.
Est-ce que cela désactive également le fait de toucher les onglets pour changer l'onglet actuel en un autre onglet spécifique ?
Sous le capot ViewPager2
travaille avec RecyclerView
pour gonfler les vues des fragments, mais l'option RecyclerView
est caché, ce qui le rend plus facile à comprendre.
val rv : RecyclerView = viewPager.getChildAt(0) as RecyclerView
rv.layoutManager = NonScrollingLayoutManager( rv.context, rv.layoutManager as LinearLayoutManager)
La méthode la plus simple consiste à récupérer l'enfant à la position zéro, qui est le numéro d'identification de l'enfant. RecyclerView
et désactiver le défilement dans le gestionnaire de mise en page, en enveloppant le gestionnaire de mise en page :
inner class NonScrollingLayoutManager(context: Context, val layoutManager: LinearLayoutManager) :
LinearLayoutManager(context, layoutManager.orientation, layoutManager.reverseLayout) {
override fun canScrollVertically(): Boolean = layoutManager.orientation == HORIZONTAL
override fun canScrollHorizontally(): Boolean = layoutManager.orientation == VERTICAL
}
Veuillez noter que si l'API modifie le gestionnaire de mise en page utilisé pour le RecyclerView, c'est-à-dire s'il s'éloigne de l'option LinearLayoutManager
cela ne fonctionnera pas et il faudra que certaines méthodes soient surchargées et que les super méthodes soient appelées.
La deuxième approche consiste à sous-classer l ViewPager2
qui est ViewGroup
et ensuite intercepter les événements de contact, avant qu'ils ne soient distribués aux vues enfant (comme vous pouvez le deviner, l'option RecyclerView
) et veillez à ne pas empêcher les clics.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.