【问题标题】:Android: ScrollView vs NestedScrollViewAndroid:ScrollView 与 NestedScrollView
【发布时间】:2016-04-18 20:35:16
【问题描述】:

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

【问题讨论】:

标签: android xml android-layout android-scrollview android-nestedscrollview


【解决方案1】:

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

这就是NestedScrollView 的用武之地。

【讨论】:

【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    Toolbar will not collapse with Scrollview as child of CoordinatorLayout

    【讨论】:

      【解决方案4】:

      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

      【讨论】:

        【解决方案5】:

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

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

        ViewCompat.setNestedScrollingEnabled(recyclerView, false);
        

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

        【讨论】:

        • 请记住,这样做(嵌套中的recyclerView)在布局传递/措施方面效率很低。测试一下,你会看到 RV 如何停止“回收”视图。
        【解决方案6】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-09-11
          • 1970-01-01
          • 1970-01-01
          • 2011-03-31
          • 1970-01-01
          • 2011-04-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多