ScrollView
和NestedScrollView
之间有什么区别?它们都延伸FrameLayout
。我想深入了解他们两者的利弊。
答案 0 :(得分:138)
NestedScrollView
顾名思义是在另一个滚动视图中需要滚动视图时使用的。通常这很难完成,因为系统无法决定滚动哪个视图。
这是NestedScrollView
的来源。
答案 1 :(得分:19)
<强> NestedScrollView 强>
NestedScrollView就像ScrollView,但它支持表现为 新旧版本上的嵌套滚动父级和子级 Android版默认情况下启用嵌套滚动。
https://developer.android.com/reference/android/support/v4/widget/NestedScrollView.html
<强>滚动型强>
可以通过滚动的视图层次结构的布局容器 用户,允许它大于物理显示。一个 ScrollView是一个FrameLayout,意味着你应该在其中放置一个孩子 包含要滚动的全部内容;这个孩子本身可能是一个 具有复杂对象层次结构的布局管理器
https://developer.android.com/reference/android/widget/ScrollView.html
答案 2 :(得分:14)
除了给出的答案中列出的优点外,NestedScrollView优于ScrollView的另一个优点是它与CoordinatorLayout的兼容性。 ScrollView不与CoordinatorLayout合作。您必须使用NestedScrollView来获取工具栏的“滚动屏幕外”行为。
Toolbar will not collapse with Scrollview as child of CoordinatorLayout
答案 3 :(得分:1)
NestedScrollView就像ScrollView,但是在NestedScrollView中,我们可以将其他滚动视图作为其子视图,例如RecyclerView。
但是,如果将RecyclerView放在NestedScrollView内,则RecyclerView的平滑滚动会受到干扰。因此,要使平滑滚动恢复原状,就可以了:
ViewCompat.setNestedScrollingEnabled(recyclerView, false);
在为recyclerView设置适配器后,在行上方放置
。答案 4 :(得分:1)
我认为使用嵌套滚动视图的好处之一是协调器布局 仅侦听嵌套滚动事件。因此,如果前。您希望工具栏在滚动活动内容时向下滚动,仅当您在布局中使用嵌套滚动视图时才会向下滚动。如果您在布局中使用普通的滚动视图,则用户滚动内容时工具栏将不会滚动。