item项布局应该设为wrap_content
当item项设置为match_parent时,如果只有一行数据,并且页面展示高度大于一屏幕时,会发现RecyclerView无法滑动,试了各种方法,最后发现是由于此问题导致。
setOnScrollListener 计算高度的问题
当RecyclerView的item增加或者删除的时候,通过累加的方式计算用户滑动的绝对距离会不再准确,可能导致某些业务逻辑的失败,此时可以通过LinearLayoutManager来计算,但是也有局限性,需要每一项都是固定高度,否则也会带来误差。代码如下
public int getScollYDistance() {
LinearLayoutManager layoutManager = (LinearLayoutManager) this.getLayoutManager();
int position = layoutManager.findFirstVisibleItemPosition();
View firstVisiableChildView = layoutManager.findViewByPosition(position);
int itemHeight = firstVisiableChildView.getHeight();
return (position) * itemHeight - firstVisiableChildView.getTop();
}