Quelle est la différence entre ScrollView
et NestedScrollView
? Tous les deux, prolongent FrameLayout
. Je veux connaître en profondeur les avantages et les inconvénients des deux.
160
Quelle est la différence entre ScrollView
et NestedScrollView
? Tous les deux, prolongent FrameLayout
. Je veux connaître en profondeur les avantages et les inconvénients des deux.
Réponses:
NestedScrollView
comme son nom l'indique, est utilisé lorsqu'il est nécessaire d'avoir une vue défilante dans une autre vue défilante. Normalement, cela serait difficile à accomplir car le système ne serait pas en mesure de décider de la vue à faire défiler.C'est là
NestedScrollView
qu'intervient.la source
En plus du défilement imbriqué,
NestedScrollView
une fonctionnalité majeure a été ajoutée, ce qui pourrait même le rendre intéressant en dehors des contextes imbriqués: il prend en chargeOnScrollChangeListener
. L'ajout d'unOnScrollChangeListener
à l'originalScrollView
ci-dessous API 23 nécessitait un sousScrollView
- classementViewTreeObserver
ScrollView
ou un déroutement avec le de, ce qui signifie souvent encore plus de travail que le sous-classement. AvecNestedScrollView
cela peut être fait en utilisant la construction en setter .la source
Outre les avantages énumérés dans les réponses données, un autre avantage de NestedScrollView sur ScrollView est sa compatibilité avec CoordinatorLayout. Le ScrollView ne coopère pas avec le CoordinatorLayout. Vous devez utiliser NestedScrollView pour obtenir le comportement de "défilement hors écran" de la barre d'outils.
La barre d'outils ne se réduira pas avec Scrollview en tant qu'enfant de CoordinatorLayout
la source
NestedScrollView
https://developer.android.com/reference/android/support/v4/widget/NestedScrollView.html
ScrollView
https://developer.android.com/reference/android/widget/ScrollView.html
la source
NestedScrollView est exactement comme ScrollView, mais dans NestedScrollView, nous pouvons mettre d'autres vues de défilement en tant qu'enfant, par exemple RecyclerView.
Mais si nous mettons RecyclerView dans NestedScrollView, le défilement fluide de RecyclerView est perturbé. Donc, pour ramener un défilement fluide, il y a une astuce:
mis au-dessus de la ligne après avoir défini l'adaptateur pour recyclerView.
la source
Je pense que l'un des avantages de l'utilisation de la vue par défilement imbriqué est que la disposition du cooridinateur n'écoute que les événements de défilement imbriqués. Donc si par ex. vous voulez que la barre d'outils défile vers le bas lorsque vous faites défiler le contenu de votre activité, elle ne défilera vers le bas que lorsque vous utilisez la vue de défilement imbriquée dans votre mise en page. Si vous utilisez une vue de défilement normale dans votre mise en page, la barre d'outils ne défilera pas lorsque l'utilisateur fait défiler le contenu.
la source