gpt4 book ai didi

android - Jetpack Compose : When using Modifier. selectable 如何防止可组合布局在滚动时被选择?

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

在 Jetpack Compose 中有一个 Modifier扩展名为 selectable .

Configure component to be selectable, usually as a part of a mutually exclusive group, whereonly one item can be selected at any point in time.


我将它用于可滚动列表中的互斥 radio 组。在我的情况下是 LazyColumn .这很好用,单击可选区域会点亮它们并导致检测到点击。但是我注意到,在滚动时“触摸”这些区域时,该区域也会亮起。
如果您想了解我的意思,我制作了一个可组合的简单示例,只需滚动列表,您将看到滚动如何触发短选择状态:
@Composable
fun Example() {
LazyColumn {
item {
repeat(100){
Column(
modifier = Modifier
.fillMaxWidth()
.height(40.dp)
.selectable(
selected = false,
onClick = { }
)
) {
Text("Example")
}
}
}
}
}
有没有人弄清楚如何解决这种行为?我尝试在 https://developer.android.com/jetpack/compose/gestures 上查找任何相关文档但没有什么能真正解释如何在滚动时“阻止”触摸事件。

最佳答案

您可以根据滚动状态有选择地启用 Modifier.selectable(enabled),但即使使用 derivedStateOf我看到有巨大的性能损失。

val scrollState = rememberLazyListState()

val enableSelectable = derivedStateOf {
!scrollState.isScrollInProgress
}


Modifier
.fillMaxWidth()
.height(40.dp)
.selectable(
enabled = enableSelectable.value,
selected = false,
onClick = { }
)

关于android - Jetpack Compose : When using Modifier. selectable 如何防止可组合布局在滚动时被选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66878874/

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