Android layout RecyclerView SCROLL\u STATE\u IDLE被延迟调用

Android layout RecyclerView SCROLL\u STATE\u IDLE被延迟调用,android-layout,scroll,android-recyclerview,android-coordinatorlayout,onscrolllistener,Android Layout,Scroll,Android Recyclerview,Android Coordinatorlayout,Onscrolllistener,在RecyclerViewaddOnScrollListener上,在项目大小结束时以及向上滚动到RecyclerView顶部时,调用属性SCROLL\u STATE\u IDLE需要时间。但它在滚动的过程中工作得很好 布局的根视图是CoordinatorLayout 当您的recyclerview到达底部时调用stopScroll()。 我认为,由于它的支持库版本已经升级,因此计算了速度,并造成了一些延迟。同样的问题,我发现的唯一解决方法是在RecyclerView获得滚动状态时发送stopS

在RecyclerView
addOnScrollListener
上,在项目大小结束时以及向上滚动到RecyclerView顶部时,调用属性
SCROLL\u STATE\u IDLE
需要时间。但它在滚动的过程中工作得很好

布局的根视图是CoordinatorLayout

当您的recyclerview到达底部时调用stopScroll()。
我认为,由于它的支持库版本已经升级,因此计算了速度,并造成了一些延迟。

同样的问题,我发现的唯一解决方法是在RecyclerView获得滚动状态时发送stopScroll(),尽管这不是理想的解决方案。考虑到滚动方向,最好检测它是否已到达上边缘或下边缘,然后调用stopScroll()

更新

此问题似乎是support library中的一个bug,但据报告已修复。很明显,该问题仍然存在,因此希望我们将来能看到一个适当的解决方案:


很好的解决方法,谢谢。我个人不得不做
recyclerView.stopNestedScroll(1)
而不是
this.stopScroll()
,而且效果很好。在阅读您的解决方案时,另一条不明显的评论是:从视觉上看,它工作正常,不会突然停止滚动。
@Override
public void onScrollStateChanged(final int state)
{
    super.onScrollStateChanged(state);

    if (state == RecyclerView.SCROLL_STATE_SETTLING)
    {
        this.stopScroll();
    }
}