Android:ScrollView与NestedScrollView

问题描述 投票:108回答:5

ScrollViewNestedScrollView有什么区别?他们两个,延伸FrameLayout。我想深入了解他们两人的利弊。

android xml android-layout android-scrollview android-nestedscrollview
5个回答
152
投票

当需要在另一个滚动视图中滚动视图时,使用NestedScrollView顾名思义。通常这很难实现,因为系统无法决定滚动哪个视图。

这就是NestedScrollView的用武之地。


21
投票

除了nested scrolling之外,NestedScrollView还增加了一个主要功能,它甚至可以在嵌套上下文之外使它变得有趣:它支持OnScrollChangeListener。将OnScrollChangeListener添加到API 23下面的原始ScrollView中需要继承ScrollViewmessing around with the ViewTreeObserver of the ScrollView,这通常意味着比子类化更多的工作。使用NestedScrollView可以使用build-in setter完成。


20
投票

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


14
投票

除了给出的答案中列出的优点之外,NestedScrollView优于ScrollView的另一个优点是它与CoordinatorLayout的兼容性。 ScrollView不与CoordinatorLayout合作。您必须使用NestedScrollView来获取工具栏的“滚动屏幕外”行为。

Toolbar will not collapse with Scrollview as child of CoordinatorLayout


1
投票

NestedScrollView就像ScrollView一样,但在NestedScrollView中我们可以将其他滚动视图作为它的子视图,例如RecyclerView。

但是如果我们将RecyclerView放在NestedScrollView中,则RecyclerView的平滑滚动会受到干扰。所以要带回平滑滚动就有诀窍:

ViewCompat.setNestedScrollingEnabled(recyclerView, false);

在为recyclerView设置适配器之后放上行。

© www.soinside.com 2019 - 2024. All rights reserved.