检查 RecyclerView 是否需要滚动
Check whether a RecyclerView needs to scroll
我有一个回调,它是在通过 LinearLayoutManager.smoothScrollToPosition()
以编程方式滚动到 RecyclerView 的某个项目后触发的。用户点击一个项目,右侧的项目将滚动到 RecyclerView 的顶部。我对 LinearLayoutManager 进行了子类化,使其始终对齐到项目的顶部。
这在触发滚动事件的情况下有效,但是当 RecyclerView 已经处于正确位置时,我没有得到 onScrollStateChanged
回调,因为没有发生滚动。有没有办法获得那个事件?比如预先决定 RecyclerView 是否需要滚动?
希望以下代码对您有所帮助
if(LinearLayoutManager.findFirstCompletelyVisibleItem() == yourDesiredPosition) {
//do your stuff
} else {
LinearLayoutManager.scrollToPositionWithOffset(yourDesiredPosition, offset);
//onScrollStateChanged would be trigger then.
}
我自己找到了以下解决方案:
// 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
}
我有一个回调,它是在通过 LinearLayoutManager.smoothScrollToPosition()
以编程方式滚动到 RecyclerView 的某个项目后触发的。用户点击一个项目,右侧的项目将滚动到 RecyclerView 的顶部。我对 LinearLayoutManager 进行了子类化,使其始终对齐到项目的顶部。
这在触发滚动事件的情况下有效,但是当 RecyclerView 已经处于正确位置时,我没有得到 onScrollStateChanged
回调,因为没有发生滚动。有没有办法获得那个事件?比如预先决定 RecyclerView 是否需要滚动?
希望以下代码对您有所帮助
if(LinearLayoutManager.findFirstCompletelyVisibleItem() == yourDesiredPosition) {
//do your stuff
} else {
LinearLayoutManager.scrollToPositionWithOffset(yourDesiredPosition, offset);
//onScrollStateChanged would be trigger then.
}
我自己找到了以下解决方案:
// 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
}