有人在 LazyColumnFor
中找到了 onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy)
的等效项吗?
最佳答案
您可以通过添加 onGloballyPositioned
https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/OnGloballyPositionedModifier 来获取第一个项目的位置第一个项目的修饰符的选项。
它返回:
- 布局创建后的初始位置
- 每次滚动事件期间更新的位置
lambda 内的 LayoutCooperatives
对象可让您获得:
positionInParent()
positionInRoot()
positionInWindow()
要从 LazyColumn
/LazyRow
获取 x 或 y,您可以使用这部分代码:
val initialLayoutY: MutableState<Float?> = rememberSaveable { mutableStateOf(null) }
Text(
text = "Lorem",
modifier = Modifier.onGloballyPositioned { layoutCoordinates ->
if (initialLayoutY.value == null) {
initialLayoutY.value = layoutCoordinates.positionInRoot().y
}
val currentTextLayoutY: Float = layoutCoordinates.positionInRoot().y
val currentLazyListY: Float = initialLayoutY.value!! - currentTextLayoutY
Log.e("Lazy Column y", currentLazyListY.toString())
}
)
不幸的是,它在快速滚动期间跳过了很多值。这是结果:
关于android - LazyColumnFor 中的 OnScrolled (Jetpack Compose),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65276066/