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.
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.
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 charge OnScrollChangeListener
. L'ajout d'un OnScrollChangeListener
à l'original ScrollView
ci-dessous API 23 nécessitait un sous ScrollView
- classementViewTreeObserver
ScrollView
ou un déroutement avec le de, ce qui signifie souvent encore plus de travail que le sous-classement. Avec NestedScrollView
cela peut être fait en utilisant la construction en setter .
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
NestedScrollView
NestedScrollView est exactement comme ScrollView, mais il prend en charge le rôle à la fois de parent et d'enfant de défilement imbriqués sur les nouvelles et anciennes versions d'Android. Le défilement imbriqué 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 qui peut être défilée par l'utilisateur, ce qui lui permet d'être plus grande 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 lui-même être un gestionnaire de mise en page avec une hiérarchie complexe d'objets
https://developer.android.com/reference/android/widget/ScrollView.html
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:
ViewCompat.setNestedScrollingEnabled(recyclerView, false);
mis au-dessus de la ligne après avoir défini l'adaptateur pour recyclerView.
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.