有没有办法使用 Jetpack Compose 仅水平滚动到上一个或下一个元素的开始或指定位置?
您可以像这样检查滚动方向
@Composable
private fun LazyListState.isScrollingUp(): Boolean {
var previousIndex by remember(this) { mutableStateOf(firstVisibleItemIndex) }
var previousScrollOffset by remember(this) { mutableStateOf(firstVisibleItemScrollOffset) }
return remember(this) {
derivedStateOf {
if (previousIndex != firstVisibleItemIndex) {
previousIndex > firstVisibleItemIndex
} else {
previousScrollOffset >= firstVisibleItemScrollOffset
}.also {
previousIndex = firstVisibleItemIndex
previousScrollOffset = firstVisibleItemScrollOffset
}
}
}.value
}
当然,您需要创建一个rememberLazyListState()
,然后将其作为参数传递给列表。
然后,根据滚动方向,您可以调用lazyListState.scrollTo(lazyListState.firstVisibleItemIndex + 1)
协程(如果用户向右滚动),并适当调用另一个方向。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句