【问题标题】:RecyclerView SCROLL_STATE_IDLE is being called lateRecyclerView SCROLL_STATE_IDLE 被延迟调用
【发布时间】:2018-06-20 15:13:28
【问题描述】:

在 RecyclerView addOnScrollListener 上,属性 SCROLL_STATE_IDLE 在项目大小结束时以及向上滚动到 RecyclerView 顶部时需要花费一些时间。但它在滚动中间运行良好。

布局的根视图是 CoordinatorLayout。

【问题讨论】:

    标签: android-layout scroll android-recyclerview android-coordinatorlayout onscrolllistener


    【解决方案1】:

    遇到同样的问题,我发现的唯一解决方法是在 RecyclerView 获得 SCROLL_STATE_SETTLING 时发送 stopScroll(),但这不是理想的解决方案。考虑到滚动方向,可能会更好地检测它是否到达了顶部或底部边缘,然后调用 stopScroll():

    @Override
    public void onScrollStateChanged(final int state)
    {
        super.onScrollStateChanged(state);
    
        if (state == RecyclerView.SCROLL_STATE_SETTLING)
        {
            this.stopScroll();
        }
    }
    

    更新

    这个问题似乎是支持库中的一个错误,虽然它被报告为已修复,但很明显问题仍然存在,所以希望我们将来能看到一个适当的解决方案:

    https://issuetracker.google.com/issues/66996774

    【讨论】:

    • 很好的解决方法,谢谢。我个人不得不做recyclerView.stopNestedScroll(1) 而不是this.stopScroll(),它工作正常。另一个在阅读您的解决方案时并不明显的评论:视觉上它工作得很好,它不会突然停止滚动。
    【解决方案2】:

    当你的 recyclerview 到达底部时调用 stopScroll()。 我认为由于它的支持库版本向上,因此会计算速度并产生一点延迟。

    【讨论】:

      猜你喜欢
      • 2016-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-01
      • 2015-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多