gpt4 book ai didi

Kotlin Jetpack Compose DragGesture 属性取消我的 View 的滚动

转载 作者:行者123 更新时间:2023-12-05 04:28:36 36 4
gpt4 key购买 nike

我是 Jetpack Compose 的新手,我非常喜欢它。但是遇到了一个问题:我想知道我的 View 是向上滑动还是向下滑动,所以我创建了一个 LazyColumn,其中包含一些项目以便能够滚动某些东西。它工作正常,但我想访问 Gesture 属性以了解 View 是向下滚动还是向上滚动,这是我的代码:

LazyColumn{
items (100){
Text(
text = "Item $it",
fontSize = 24.sp,
textAlign = TextAlign.Center,
modifier = Modifier
.fillMaxSize()
.padding(vertical = 24.dp)
.pointerInput(Unit) {
detectDragGestures { change, dragAmount ->
//change.consumeAllChanges()// i don't know if this does something, i tried to remove it
println("detectDragGestures")
val (x, y) = dragAmount
if(abs(x) < abs(y)){
if (y > 0)
println("drag down")
else
println("drag Up")
}
}
})
}
}

这项工作,我可以检测 View 是否向下或向上滚动,问题是当我点击项目并滚动时,我得到了正确的打印但 View 没有滚动,我必须在项目之间单击以能够滚动。

我真的不知道手势在 jetpack compose 中是如何工作的,但我想在不阻止我的 View 滚动的情况下获得滑动的方向。

最佳答案

我设法使用 Column 而不是 LazyColumn 来检测滚动方向。

希望它能给你带来帮助。

@Composable
fun ScrollDetect() {
val scrollState = rememberScrollState()
var dragPosition by remember {
mutableStateOf(0)
}
LaunchedEffect(key1 = scrollState.value, block = {
if (scrollState.value > dragPosition)
Log.e("dragging", "up")
else
Log.e("dragging", "down")
dragPosition = scrollState.value

})
Column(
modifier = Modifier
.verticalScroll(scrollState)
)
{
repeat(100) {
Text(
text = "Item $it",
fontSize = 24.sp,
textAlign = TextAlign.Center,
modifier = Modifier
.fillMaxSize()
.padding(vertical = 24.dp)

)
}
}
}

关于Kotlin Jetpack Compose DragGesture 属性取消我的 View 的滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72558588/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com