此recyclerview头部加了两个headerview一下是尝试的三个方法,
方法一就是会被tab覆盖一点,但是滚动的位置是正确的
方法一加方法二做二次滚动,隔1秒就反弹到第二个header 的位置
方法三的话不会被覆盖,但是滚动位置不准确
设置位置为0就在顶部,1就在第二个header的位置
2就在第二个item的位置,直接过度过第一个item不知道为啥
设置位置3,4和2都是同样的效果
if (isReload && mPage == 1 && count > 3) {
isReload = false;
try {
if (firstVisiblePosition > 0) {//方法一:此方法会被tab覆盖一部分
mRecyclerView.smoothScrollToPosition(2);
} else {
mRecyclerView.smoothScrollToPosition(4);
}
// if (mRecyclerView.getLayoutManager() instanceof GridLayoutManager) {//方法三此方法总是多滚动一行
// if (firstVisiblePosition > 0) {
// ((GridLayoutManager) mRecyclerView.getLayoutManager()).scrollToPositionWithOffset(2, (int) (40 * App.mDensity));
// } else {
// ((GridLayoutManager) mRecyclerView.getLayoutManager()).scrollToPositionWithOffset(3, (int) (20 * App.mDensity));
// }
// }
readyMove = true;
} catch (Exception e) {
e.printStackTrace();
}
}
// try {//方法二:由于二次跳转回造成反弹,暂时不管遮住的tab高度部分
// if (newState == RecyclerView.SCROLL_STATE_IDLE && readyMove) {
// readyMove = false;
//
// if (firstVisiblePosition > 0) {
// mRecyclerView.smoothScrollBy(0, -(int) (37 * App.mDensity));
// } else {
// mRecyclerView.smoothScrollBy(0, -(int) (29 * App.mDensity));
// }
// }
// } catch (Exception e) {
// e.printStackTrace();
// }