在Jetpack Compose中使用SnapFlingBehavior时,我如何SNAP到LazyColumn的初始索



我有一个非常有趣的问题。我们来谈谈啪啪啪。现在,snap是一个一流的api (RIP Snapper库),可用于使用LazyColumn的组合开发,一个基本的问题出现了……我如何初始化LazyColumn,使它出现在屏幕上漂亮,完美地捕捉到列中定义的索引/项元素,而不是视觉上休息在两个元素之间?为什么没有snap?https://developer.android.com/reference/kotlin/androidx/compose/foundation/gestures/snapping/SnapFlingBehavior,你可以看到,它非常简单和有用的行为添加临时扔到LazyColumns——特别是如果你一直在你的应用程序列表。它使你随时滚动或扔列,它会快速完美到最终的项目最近的中心LazyColumn小锄子问题是,没有snapToIndex方法提供了…和animateToScrollIndex似乎不友好的Snap,因为它导致触发滚动动画休息到两个元素之间的最终位置。我没有尝试过导致以编程方式捕捉到项目索引。有什么想法吗??一定有一些可能的方法来解决这个根本问题。如果有办法做到这一点,它可以大大增加在LazyColumn和LazyRow世界(imho的一些最重要的性能相关的小部件在框架)的SnapFlingBehavior的效用。

有没有人找到一个解决方案,以编程方式控制索引,你目前抓拍到?

/** Basic usage **/
val listState = rememberLazyListState()

val flingBehavior = rememberSnapFlingBehavior()

LazyColumn(state = listState, flingBehavior = flingBehavior) 

/** Exampe of things that don't result in snapping to an index **/
listState by rememberLazyListState(firstVisibleItemIndex: 5)
listState.animateScrollTo(index: 10)

发现呼叫

listState.scroll{
with(flingBehavior) {
performFling(initialVelocity)
}
}

从一个启动的效果和传递的状态和投掷行为,你用来配置LazyColumn将导致列在屏幕上已经被一个项目。只要在创建惰性列表状态时为第一个可见项索引提供一个非0值。

最新更新