如何才能将LinearSnapHelper()的特定位置捕捉到Horizular RecrecerView中的特定位置?对于此SnapHelper,有一个用于滚动到该位置但未将其保持在中心位置的函数Scrolltoposition。
我正在寻找类似下图的东西。因此,当我设置到特定位置时,它会将它保持在中心。我找不到任何与为SnapHelper选择职位相关的内容
我找到了this,但这对我没有帮助。任何帮助都将不胜感激。
如何才能将LinearSnapHelper()的特定位置捕捉到Horizular RecrecerView中的特定位置?对于此SnapHelper,有一个用于滚动到该位置但未将其保持在中心位置的函数Scrolltoposition。
我正在寻找类似下图的东西。因此,当我设置到特定位置时,它会将它保持在中心。我找不到任何与为SnapHelper选择职位相关的内容
我找到了this,但这对我没有帮助。任何帮助都将不胜感激。
4条答案
按热度按时间wooyq4lh1#
如果我理解你的问题,你正在寻找一种方法来跳到一个位置,并使该位置位于
RecyclerView
的中心。也许您尝试过
RecyclerView.scrollToPosition()
,但它不能捕捉到视图。你可能也试过RecyclerView.smoothScrollToPosition()
,效果更好,但如果你有很多项目并且滚动了很长一段路,你可能想要避免所有的移动。scrollToPosition()
不工作的原因是它不触发LinearSnapHelper
,后者使用滚动监听器来检测何时进行快照。由于smoothScrollToPosition()
确实触发了LinearSnapHelper
,因此我们将使用scrollToPosition()
进入目标视图区域,然后使用smoothScrollToPosition()
使视图居中,如下所示:示例APP
MainActivity.Java
Activity_main.xml
RecillerViewAdapter.java
jtw3ybtb2#
将此添加到您想要滚动回收器视图的任何位置
通过使用附加到回收器视图的此LinearSnap Helper
oxcyiej73#
对于水平循环视图,您应该使用
PagerSnapHelper()
而不是LinearSnapHelper()
。hmtdttj44#
我刚刚做了一些研究,并追踪了SnapHelper的源代码,结果证明解决方案可能非常简单:
然后你可以在这里传递Reccle View的LayoutManager和目标位置