ScrollView
和NestedScrollView
有什么区别?他们两个,延伸FrameLayout
。我想深入了解他们两人的利弊。
当需要在另一个滚动视图中滚动视图时,使用NestedScrollView
顾名思义。通常这很难实现,因为系统无法决定滚动哪个视图。
这就是NestedScrollView
的用武之地。
除了nested scrolling之外,NestedScrollView
还增加了一个主要功能,它甚至可以在嵌套上下文之外使它变得有趣:它支持OnScrollChangeListener
。将OnScrollChangeListener
添加到API 23下面的原始ScrollView
中需要继承ScrollView
或messing around with the ViewTreeObserver
of the ScrollView
,这通常意味着比子类化更多的工作。使用NestedScrollView
可以使用build-in setter完成。
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
除了给出的答案中列出的优点之外,NestedScrollView优于ScrollView的另一个优点是它与CoordinatorLayout的兼容性。 ScrollView不与CoordinatorLayout合作。您必须使用NestedScrollView来获取工具栏的“滚动屏幕外”行为。
Toolbar will not collapse with Scrollview as child of CoordinatorLayout
NestedScrollView就像ScrollView一样,但在NestedScrollView中我们可以将其他滚动视图作为它的子视图,例如RecyclerView。
但是如果我们将RecyclerView放在NestedScrollView中,则RecyclerView的平滑滚动会受到干扰。所以要带回平滑滚动就有诀窍:
ViewCompat.setNestedScrollingEnabled(recyclerView, false);
在为recyclerView设置适配器之后放上行。