阻止用户在RecyclerView上滚动到指定位置

9
我有一个问题,我是Android编程的新手,只有6-8周的编程经验,所以可能看不到简单的答案,但这是我的问题:
我正在制作一个学校项目,尝试开发类似于今天日历拆分视图中的日历(下面的那个)。

Image 1

我已经使用GridLayoutManager创建了一个RecyclerView,它的样子是这样的:

Image 2

到目前为止,一切都很好,但我正在尝试实现将日历设置为今天日期的按钮,问题是当我用fling滚动并使用scrollToPositionWithOffset(position, 0)设置RecyclerView位置时,视图保持了从第一个fling获得的动量,设置了位置然后继续滚动直到动量消失。我已经搜索了很多解决方案,当我使用gridView而不是RecyclerView时,我使用了smoothScrollToPositionFromTop()来停止滚动,然后使用setSelection()来定位它,但是gridView跳帧,所以我不得不改变。在这里,RecyclerView没有smoothScrollToPositionFromTop,smoothScrollToPosition不会停止滚动,scrollToPosition或scrollToPositionWithOffset也不会停止滚动。我找到了这个,但没有帮助 Scroll RecyclerView to show selected item on top,还有许多其他也没有帮助。我考虑实现自己的滚动逻辑,但当我研究它时,我的头都要爆炸了,我不知道从哪里开始。有人知道如何解决这个问题吗?
1个回答

48

你知道吗,RecyclerView有一个stopScroll()方法,可以停止滚动?


1
哦天啊,我现在脸掌得好厉害 :_) 非常感谢。我一旦测试过,就会接受您的答案 ;) - alessandro gaboardi
3
嘿,我已经愉快地把电脑打磨了30年,但仍然每天都要踩到坑里。干杯! - kris larson
我在一个空白的 Activity 上尝试了这个带有静态单元格内容的功能,它只有一个文本视图并显示为 "aaa"。在 Lollipop 上工作得非常好,但在 pre-Lollipop 上卡顿很多,几乎就像使用了 scrollTo 而不是 smoothScrollTo 一样。当我将所有 TextView 替换成 ic_launcher 的 ImageView 后,卡顿现象明显减少了。 - alessandro gaboardi
非常感谢,我已经把我的代码放在了这里 https://github.com/sedestrian/Scroll-Test,它只是一个带有静态内容单元的基本recyclerview。我希望我已经放了所有需要的东西 :) - alessandro gaboardi
可能是这样,但为什么还要在Lollipop之前提供smoothScroll方法呢?(我忘了告诉你,为了尝试我的代码,我有点草率,所以你需要点击“设置”开始滚动XD) - alessandro gaboardi
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接