首先滚动到 RecyclerView 之外

Posted

技术标签:

【中文标题】首先滚动到 RecyclerView 之外【英文标题】:Scrolling outside RecyclerView first 【发布时间】:2020-07-06 13:08:06 【问题描述】:

我需要你的帮助来解决一个小问题。

我有什么:

    内部带有垂直 LinearLayout 的 NestedScrollView。

    在 LinearLayout 中,我有三个元素:一个 CardView、一个 RecyclerView 和另一个 CardView。

现状: 如果我将 RecyclerView 高度设置为“wrap_content”,它将根据其内容计算大小,但 500 个元素有点复杂,需要 7-8 秒,因此此解决方案无效。

我需要什么:

我想我需要一个解决方案,让 RecyclerView 像一个列表一样,但动态地为元素充电,而不是一次全部充电。

我尝试了什么: 我尝试将 RecyclerView 高度设置为大于屏幕的固定尺寸(比如说 1000dp),但它有两个问题:

    如果没有足够的元素来填充 Recycler,则 Recycler 的末尾会有一个空白空间。

    如果有足够的元素填充 Recycler,当我滚动时,它会首先滚动 Recycler 的内容,然后,当它到达末尾时,滚动 NestedScrollView 以显示最后一个 CardView。

理想情况下,我希望它首先滚动 NestedScrollView,直到 Recycler 的顶部到达 NestedScrollView 的顶部,然后它滚动 Recycler,最后,当到达 Recycler 的末尾时,完成滚动 NestedScrollView 直到它结束.

谢谢

【问题讨论】:

【参考方案1】:

我建议您将 overScrollMode 放在 RecyclerView 中。它将确保它在 NestedScrollView 中正常运行。

<android.support.v7.widget.RecyclerView
            android:layout_
            android:layout_
            android:overScrollMode="never" />

同时加载 500 多个元素可能会占用内存,特别是如果它包含大量数据,我建议您对它们进行分页,并且每次 RecyclerView 到达第一端“假设 10 个项目”时,它将继续检索更多,直到它到达您的所有项目。

【讨论】:

以上是关于首先滚动到 RecyclerView 之外的主要内容,如果未能解决你的问题,请参考以下文章

CoordinatorLayout 中的 RelativeLayout 不滚动

在 Recyclerview 之外拖放视图

仿微信未读RecyclerView平滑滚动定位效果

取消选择 RecyclerView 单元格,但点击它之外的任何地方

滚动到嵌套recyclerview android kotlin中的位置

RecyclerView分隔线定制