网上一般可以找到四种方式,这里就不说了,直接上代码
public int
getScrollOffsetX() {
LinearLayoutManager layoutManager = (LinearLayoutManager)getLayoutManager()
;
if(layoutManager!=
null) {
int firstItemPosition = layoutManager.findFirstVisibleItemPosition()
;
View firstVisibleItem = getChildAt(
0)
;
if(firstVisibleItem!=
null) {
//
int itemWidth = getItemWidthWithDecoration()
; 自定义的方法,知道每一个item已经间距的宽度
int itemWidth = firstVisibleItem.getWidth(); //这种方式没试过,
int firstItemRight = layoutManager.getDecoratedRight(firstVisibleItem)
;
int offset = firstItemPosition * itemWidth
;
offset += itemWidth - firstItemRight;
return offset
;
}
}
return 0
;
}
思路根据firstItemPosition = layoutManager.findFirstVisibleItemPosition();获取当前显示的第一个item的index,再根据firstItemRight = layoutManager.getDecoratedRight(firstVisibleItem);获取当前显示的item的右边距离RecycleView左边的距离,在用index乘以每个item加上间距的距离算出前面的总偏移量再加上itemWidth - firstItemRight就可以获取总的偏移量。