csdnwr 2018-02-08 10:22 采纳率: 0%
浏览 6237
已结题

(急)求教gridlayoutmanager的recyclerview自动滚动到指定位置的问题

此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();
// }

  • 写回答

3条回答

  • 键盘舞者113 博客专家认证 2018-02-08 10:38
    关注

    recyclerView.smoothScrollToPosition(position);
    这个行吗,直接滚动到特定的item

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器