我正在使用伴奏寻呼机库(版本0.18.0),并创建了一个垂直寻呼机显示某些图片。
向上/向下滚动时,所需的行为是滚动到下一张/上一张图片,这很有效,但在快速滚动时,它又在捕捉同一张图片。
我想切换到最轻微滚动的图片。
我尝试修改. flingBehavior,如下所述:How to set a threshold for LazyColumn/ViewPager before starting to scroll?
但是它没有如预期的那样工作。
我正在使用伴奏寻呼机库(版本0.18.0),并创建了一个垂直寻呼机显示某些图片。
向上/向下滚动时,所需的行为是滚动到下一张/上一张图片,这很有效,但在快速滚动时,它又在捕捉同一张图片。
我想切换到最轻微滚动的图片。
我尝试修改. flingBehavior,如下所述:How to set a threshold for LazyColumn/ViewPager before starting to scroll?
但是它没有如预期的那样工作。
1条答案
按热度按时间s3fp2yjn1#
简短回答
禁用
overscroll
长答案
我认为这是
Pager.kt
中使用的SnappingFlingBehavior
的问题我遇到了同样的问题,我找不到此问题的答案,但在
onDragStopped()
函数中查看Scrollable.kt
的源代码后,我们可以在顶部看到此检查如果启用了overscroll--这是您在列表的开始/结束处看到的类似于 bounce 的效果,并且在同一项上快速滚动的情况下,它会从
velocity
中消失。这导致
SnappingFlingBehavior.performFling()
的实现和targetIndex
(您希望在ViewPager中滚动到的索引)的内部performSpringFling
计算与当前索引相同,因此不会移动。如果禁用overscroll,您将获得预期的行为,但更好的解决方案是实现您自己的
FlingBehavior