【问题标题】:Android RecyclerView InertiaAndroid RecyclerView 惯性
【发布时间】:2020-06-29 03:30:24
【问题描述】:

我已将 RecyclerView 版本更新为 26.0.1,并使用 RecyclerView 实现了分页,所以当我到达列表底部时,我会看到 ProgressBar 并加载更多数据以显示,然后通知插入的索引

因此,使用新的 26.0.1 RecyclerView 版本可以节省滚动的惯性。因此,当我快速向下滑动并到达底部时,我会看到 ProgressBar,但是在插入新数据后 RecyclerView 一直向下滚动

我知道这是惯性,因为如果我慢慢滑动,插入新数据后它不会向下滚动

问题:如何禁用这种惯性滑动?

附:我的 RecyclerView 在 NestedScrollView 中

【问题讨论】:

  • 你的代码在哪里?
  • @uguboz 你需要密码吗?它是 NestedScrollView 内的 RecyclerView,RecyclerView 禁用了 nestedScrolling。在 25.* 版本的 RecyclerView 上没有惯性。我将尝试用它创建一个示例应用程序,看看它的行为是否相同
  • 我不知道这种情况下的预期行为是什么。但是你也许可以停止滚动新的数据加载。

标签: android android-recyclerview


【解决方案1】:

很抱歉回复晚了,但我遇到了同样的问题。 我有一个包含多个项目的 NestedScrollView,包括 RecyclerView。 我注意到,当显示 LOADING 状态时,所有内容都在没有任何惯性的情况下滚动,但是一旦我使 recyclerView 可见,就会出现惯性。该代码帮助了我:

recyclerView.isNestedScrollingEnabled = false

它对 androidX RecylerView 小部件有所帮助。

【讨论】:

    【解决方案2】:

    遇到了同样的问题,RecyclerView 在 API 26 上无限滚动。只需将此代码添加到覆盖的 onScrolled 事件中即可解决此问题,我已经使用它来加载后续数据页面。我把它放在super.onScrolled() 调用之后和我的无限页面加载触发器之前。

    if (!recyclerView.canScrollVertically(1)) {
        recyclerView.stopScroll();
    }
    

    这会检测RecyclerView 是否不能再向下滚动(1 表示向下,-1 表示向上),并使用内置方法停止滚动。

    【讨论】:

    • 最接近修复的事情。不完美,因为这个 scoll 事件onScrolled 在物理滚动已经发生时以某种方式稍后报告,所以父视图在停止之前仍会滚动少量,但我可以忍受这个 - 总比没有好。谢谢!
    猜你喜欢
    • 2015-01-27
    • 2017-11-15
    • 2011-12-11
    • 2017-10-29
    • 1970-01-01
    • 2021-06-02
    相关资源
    最近更新 更多