Ric*_*per 13 android android-jetpack-compose android-jetpack-compose-list
对于LazyRow, 或Column,如何知道用户是否向左或向右滚动(或向上或......你知道)。对于类似的东西,我们不需要在 compose 中回调,因为mutableStateOf对象总是会触发重组,所以我只是想知道一种将其存储在变量中的方法。好的,有lazyRowState.firstVisibleItemScrollOffset,它可以用来以某种方式测量它,但我找不到一种方法来首先存储它的值,然后减去当前值来检索方向(基于正或负变化)。关于如何做到这一点的任何想法,谢谢
Gab*_*tti 33
目前没有内置函数可以从中获取此信息LazyListState。
你可以使用类似的东西:
@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
}
Run Code Online (Sandbox Code Playgroud)
然后只需使用即可listState.isScrollingUp()获取有关卷轴的信息。
| 归档时间: |
|
| 查看次数: |
6051 次 |
| 最近记录: |