RecyclerView SCROLL_STATE_IDLE被调用很晚

时间:2018-01-11 10:14:51

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

在RecyclerView addOnScrollListener上,属性SCROLL_STATE_IDLE需要一些时间才能在项目大小结束时调用,并且向上滚动到RecyclerView的顶部。但它在滚动的中间工作正常。

布局的根视图是CoordinatorLayout。

2 个答案:

答案 0 :(得分:3)

遇到同样的问题,我发现的唯一解决方法是每当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

答案 1 :(得分:0)

当您的recyclerview已达到最低点时调用stopScroll()。 我认为,既然它支持库版本,速度就会被计算,并且会使延迟变得有点。