【发布时间】:2016-04-18 20:35:16
【问题描述】:
ScrollView 和 NestedScrollView 有什么区别?他们两个,扩展FrameLayout。我想深入了解两者的优缺点。
【问题讨论】:
标签: android xml android-layout android-scrollview android-nestedscrollview
ScrollView 和 NestedScrollView 有什么区别?他们两个,扩展FrameLayout。我想深入了解两者的优缺点。
【问题讨论】:
标签: android xml android-layout android-scrollview android-nestedscrollview
NestedScrollView 顾名思义,用于在另一个滚动视图中需要滚动视图时使用。通常这很难实现,因为系统无法决定滚动哪个视图。
这就是NestedScrollView 的用武之地。
【讨论】:
除了nested scrolling NestedScrollView 添加了一项主要功能,它甚至可以使它在嵌套上下文之外变得有趣:它内置了对OnScrollChangeListener 的支持。将OnScrollChangeListener 添加到原始ScrollView API 23 之下 需要子类化ScrollView 或messing around with the ViewTreeObserver of the ScrollView,这通常意味着比子类化更多的工作。使用NestedScrollView 可以使用build-in setter 完成。
【讨论】:
除了给出的答案中列出的优点之外,NestedScrollView 优于 ScrollView 的另一个优点是它与 CoordinatorLayout 的兼容性。 ScrollView 不配合 CoordinatorLayout。您必须使用 NestedScrollView 来获得工具栏的“滚动屏幕外”行为。
Toolbar will not collapse with Scrollview as child of CoordinatorLayout
【讨论】:
NestedScrollView
NestedScrollView 和 ScrollView 一样,但它支持充当 新旧版本中的嵌套滚动父项和子项 安卓的。默认启用嵌套滚动。
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 放在 NestedScrollView 里面,就会扰乱 RecyclerView 的平滑滚动。所以要恢复平滑滚动,有一个窍门:
ViewCompat.setNestedScrollingEnabled(recyclerView, false);
在为 recyclerView 设置适配器后放在上面的行。
【讨论】:
我认为使用嵌套滚动视图的一个好处是协调器布局 只监听嵌套的滚动事件。所以如果对于前。您希望工具栏在滚动活动内容时向下滚动,它只会在您在布局中使用嵌套滚动视图时向下滚动。如果您在布局中使用普通滚动视图,则当用户滚动内容时工具栏不会滚动。
【讨论】: