检查RecyclerView是否需要滚动

时间:2016-07-07 09:51:26

标签: android scroll android-recyclerview linearlayoutmanager

我通过LinearLayoutManager.smoothScrollToPosition()以编程方式滚动到RecyclerView的某个项目后触发了回调。用户点击一个项目,右侧项目滚动到RecyclerView的顶部。我将LinearLayoutManager子类化,使其始终捕捉到项目的顶部 这适用于触发滚动事件的情况,但是当RecyclerView已经处于正确的位置时,我没有得到onScrollStateChanged回调,因为没有滚动发生。有没有办法让这个事件发生?喜欢事先决定RecyclerView是否需要滚动?

2 个答案:

答案 0 :(得分:1)

希望以下代码可以提供帮助

if(LinearLayoutManager.findFirstCompletelyVisibleItem() == yourDesiredPosition) {
  //do your stuff
} else {
  LinearLayoutManager.scrollToPositionWithOffset(yourDesiredPosition, offset);
  //onScrollStateChanged would be trigger then.
}

答案 1 :(得分:-1)

我自己找到了以下解决方案:

// get the view the user selected
View view = mLayoutManager.findViewByPosition(index);
// get top offset 
int offset = view.getTop();
if (offset == 0) { // the view is at the top of the scrollview
    showDetailViewInternal(event);
} else {
    // scrolling
}