android: ScrollView vs NestedScrollView
Quelle est la différence entre ScrollView
et NestedScrollView
en fait ? J'ai utilisé les deux d'entre eux. Tous les deux, étendre FrameLayout
. Je veux connaître en profondeur le pour et le contre des deux. Si quelqu'un peut s'il vous plaît aider moi. Grâce.
4 réponses
NestedScrollView
comme son nom l'indique est utilisé lorsqu'il y a un besoin d'une vue de défilement à l'intérieur d'une autre vue de défilement. Normalement, cela serait difficile à réaliser puisque le système serait incapable de décider quelle vue Faire défiler.
c'est ici que NestedScrollView
entre en jeu.
NestedScrollView
NestedScrollView est exactement comme ScrollView, mais il supporte agir comme à la fois un parent de défilement imbriqué et l'enfant sur les deux versions nouvelles et anciennes de Android. Imbriqués, le défilement est activé par défaut.
https://developer.android.com/reference/android/support/v4/widget/NestedScrollView.html
ScrollView
conteneur de mise en page pour une hiérarchie de vues pouvant être l'utilisateur, lui permettant d'être plus grand que l'affichage physique. Un ScrollView est un FrameLayout, ce qui signifie que vous devez y placer un enfant contenant tout le contenu à faire défiler; cet enfant peut être lui-même layout manager avec une hiérarchie complexe d'objets
https://developer.android.com/reference/android/widget/ScrollView.html
en plus du scrolling imbriqué NestedScrollView
a ajouté une fonctionnalité majeure, qui pourrait même le rendre intéressant en dehors des contextes imbriqués: il a construit en support pour OnScrollChangeListener
. Ajouter un OnScrollChangeListener
à l'original ScrollView
sous API 23 sous-classement requis ScrollView
ou brouillant avec le ViewTreeObserver
du ScrollView
ce qui signifie souvent encore plus de travail que le sous-classement. Avec NestedScrollView
il peut être fait en utilisant le setter .
outre les avantages énumérés dans les réponses données, un autre avantage de NestedScrollView par rapport à ScrollView est sa compatibilité avec CoordinatorLayout. Le ScrollView ne coopère pas avec le CoordinatorLayout. Vous devez utiliser NestedScrollView pour obtenir le comportement "scroll off-screen" pour la barre d'outils.
de la Barre d'outils ne s'affaisse pas avec le Scrollview comme enfant de CoordinatorLayout