我有一个包含不同子视图的RecyclerView
。
然后用户滚动它。
我想确切地知道用户与开始状态相比滚动了多少像素。
换句话说,我想确切地知道屏幕当前内容与RecyclerView
的第一项的距离(以像素为单位)。
我看到RecyclerView
有一个方法computeVerticalScrollOffset
。但该方法返回错误的值。
答案 0 :(得分:0)
OnScrollListener
可能。覆盖onScroll()
方法,其参数是水平轴或垂直轴滚动的距离。
但问题很少。这不是最终的滚动值,而是许多值,你必须总结,直到状态变为RecyclerView.SCROLL_STATE_IDLE
。
private class YourOnScrollListener extends RecyclerView.OnScrollListener {
private int scrollXDistance = 0;
private int scrollYDistance = 0;
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
if (newState == RecyclerView.SCROLL_STATE_IDLE) {
Log.d(TAG, "X distance: " + scrollXDistance + " " + "Y distance:" + scrollYDistance);
}
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
scrollXDistance += dx;
scrollYDistance += dy;
}
}