ScrollView
和 和有什么不一样NestedScrollView
?他们两个,扩展FrameLayout
。我想深入了解两者的优缺点。
6 回答
NestedScrollView
顾名思义,在另一个滚动视图中需要滚动视图时使用。通常这很难完成,因为系统将无法决定滚动哪个视图。
这就是NestedScrollView
进来的地方。
除了嵌套滚动 NestedScrollView
之外,还添加了一项主要功能,这甚至可以使它在嵌套上下文之外变得有趣:它内置了对OnScrollChangeListener
. 在 API 23 以下OnScrollChangeListener
的原始版本中添加 a需要子类化或弄乱of ,这通常意味着比子类化更多的工作。可以使用内置的 setter来完成。ScrollView
ScrollView
ViewTreeObserver
ScrollView
NestedScrollView
除了给出的答案中列出的优点之外,NestedScrollView 优于 ScrollView 的另一个优点是它与 CoordinatorLayout 的兼容性。ScrollView 不配合 CoordinatorLayout。您必须使用 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 一样,但在 NestedScrollView 中我们可以将其他滚动视图作为它的子视图,例如 RecyclerView。
但是如果我们把 RecyclerView 放在 NestedScrollView 里面,就会扰乱 RecyclerView 的平滑滚动。因此,要恢复平滑滚动,有一个窍门:
ViewCompat.setNestedScrollingEnabled(recyclerView, false);
在为 recyclerView 设置适配器后放在上面的行。
我认为使用嵌套滚动视图的一个好处是协调器布局只监听嵌套滚动事件。所以如果对于前。您希望工具栏在滚动活动内容时向下滚动,它只会在您在布局中使用嵌套滚动视图时向下滚动。如果您在布局中使用普通滚动视图,则当用户滚动内容时工具栏不会滚动。