ChatGPT解决这个技术问题 Extra ChatGPT

Android:ScrollView 与 NestedScrollView

ScrollViewNestedScrollView 有什么区别?两者都扩展 FrameLayout。我想深入了解两者的优缺点。


A
Ajay S

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

这就是 NestedScrollView 的用武之地。


这是在父 ScrollView 中演示 NestedScrollView 的示例应用:github.com/AdamSHurwitz/NestedScrolling
F
Fabian Ochmann

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


S
Suraj

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

Toolbar will not collapse with Scrollview as child of CoordinatorLayout


A
Amit Vaghela

嵌套滚动视图

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


U
Umar Farooq

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

但是如果我们把 RecyclerView 放在 NestedScrollView 里面,就会扰乱 RecyclerView 的平滑滚动。因此,要恢复平滑滚动,有一个窍门:

ViewCompat.setNestedScrollingEnabled(recyclerView, false);

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


请记住,这样做(嵌套内的recyclerView)在布局传递/措施方面效率很低。对其进行测试,您将看到 RV 如何停止“回收”视图。
V
Vibhanshu Sharma

我认为使用嵌套滚动视图的一个好处是协调器布局只监听嵌套滚动事件。所以如果对于前。您希望工具栏在滚动活动内容时向下滚动,它只会在您在布局中使用嵌套滚动视图时向下滚动。如果您在布局中使用普通滚动视图,则当用户滚动内容时工具栏不会滚动。


A
Anand Nishad
<androidx.core.widget.NestedScrollView android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">

   
 // your Layout xml code


 </androidx.core.widget.NestedScrollView>

如果您有新问题,请点击 Ask Question 按钮提出问题。如果有助于提供上下文,请包含指向此问题的链接。 - From Review