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 请求分析基于spring boot+vue的前后端分离的项目
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥200 关于#c++#的问题,请各位专家解答!网站的邀请码
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?