刚开始有个需求是要求首页滑动到某个位置的时候 要置顶页面中间的一个标题栏,因为项目比较着急 于是想使用比较简单显示隐藏处理。 但是发现了如下问题: 刚开始没考虑到有header的情况,使用如下方法: 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(); } 发现一个问题 每次滑动到header看不到的时候就出现计算距离不准确的情况。 经过一番查询,终于发现问题就是header导致的,于是修改方法,得到如下放法:亲测可用 private int headerHeight; private int getScrollY() { LinearLayoutManager layoutManager = (LinearLayoutManager) homeRv.getLayoutManager(); // 获取第一个可见item的位置 int position = layoutManager.findFirstVisibleItemPosition(); if (position == 0) { // 获取header View headerView = layoutManager.findViewByPosition(0); // 获取第一个可见item的高度 headerHeight = headerView.getHeight(); } // 获取第一个可见item View firstVisiableChildView = layoutManager.findViewByPosition(position); // 获取第一个可见item的高度 int itemHeight = firstVisiableChildView.getHeight(); // 获取第一个可见item的位置 int iResult = 0; if (position == 0) { iResult = (position) * itemHeight - firstVisiableChildView.getTop(); } else { iResult = (position) * itemHeight - firstVisiableChildView.getTop() + headerHeight; } return iResult; }
RecyclerView滑动距离计算(包含header的情况)
最新推荐文章于 2023-01-11 11:19:21 发布