seb seb - 6 months ago 502
Java Question

How to get the Scrollposition in the Recyclerview/Layoutmanager?

How to get the scrollposition in

Recyclerview
or the
Layoutmanager
?

I can measure the scrollposition by adding an
OnScrollListener
, but when the Orientation changes
scrollDy
is 0.

mRecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {
int scrollDy = 0;
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}

@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
scrollDy += dy;
}
});

Answer

You cannot get it because it does not really exist. LayoutManager only knows about the views on screen, it does not know the views before, what their size is etc.

The number you can count using the scroll listener is not reliable because if data changes, RecyclerView will do a fresh layout calculation and will not try to re-calculate a real offset (you'll receive an onScroll(0, 0) if views moved).

RecyclerView estimates this value for scrollbars, you can use the same methods from View class.

computeHorizontalScrollExtent

computeHorizontalScrollRange

computeHorizontalScrollOffset

These methods have their vertical counterparts as well.