我目前正在尝试实现在可组合项可缩放、可平移(拖动表面)或两者之间切换的选项。到目前为止,有效的方法是切换相应的按钮,以达到预期的结果。不起作用的是切换一个按钮与另一个按钮 - 这会产生保留第一个按钮功能的意外结果。例如,假设缩放处于活动状态。当我按下平移按钮时,背景突出显示会相应变化,所有测试日志都显示预期状态 - 但表面仍然可缩放,不可拖动。我首先必须手动禁用缩放。关于为什么会发生这种情况有什么想法吗?
Modifier.run {
if (zoomEnabled) {
this.pointerInput(Unit) {
detectTransformGestures { _, _, zoom, _ ->
passScale(zoom)
}
}
} else if (panEnabled) {
this.pointerInput(Unit) {
detectDragGestures { change, dragAmount ->
change.consumeAllChanges()
passOffsetX(dragAmount.x / 3)
passOffsetY(dragAmount.y / 3)
}
}
} else
this
}
Run Code Online (Sandbox Code Playgroud)
纽扣:
@Composable
fun TopBarAction(
zoomEnabled: Boolean,
passZoomEnabled: (Boolean) -> Unit,
panEnabled: Boolean,
passPanEnabled: (Boolean) -> Unit
) {
IconToggleButton(
checked = zoomEnabled,
onCheckedChange = {
passPanEnabled(false)
passZoomEnabled(it)
},
modifier = Modifier
.background(
if …
Run Code Online (Sandbox Code Playgroud)