Edw*_*aak 6 android kotlin android-jetpack-compose
在 Jetpack Compose 中有一个Modifier名为selectable.
将组件配置为可选择的,通常作为互斥组的一部分,在任何时间点只能选择一个项目。
我将它用于可滚动列表内的互斥无线电组。在我的情况下LazyColumn。这工作正常,单击可选区域会点亮它们并导致检测到点击。但是我注意到在滚动时“触摸”这些区域时该区域也会亮起。
如果您想了解我的意思,我制作了一个可组合的简单示例,只需滚动列表,您就会看到滚动如何触发短选择状态:
@Composable
fun Example() {
LazyColumn {
item {
repeat(100){
Column(
modifier = Modifier
.fillMaxWidth()
.height(40.dp)
.selectable(
selected = false,
onClick = { }
)
) {
Text("Example")
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
有没有人想出如何解决某种行为?我尝试在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 = { }
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
522 次 |
| 最近记录: |