在 Compose 中 onClick 后禁用视图

gal*_*irl 5 android onclick android-jetpack-compose

我想在单击箭头图像后禁用它,并可以选择在另一个事件后再次启用它。

Image(
                painterResource(R.drawable.arrow_back_btn),
                contentDescription = "back",
                modifier = Modifier
                    .padding(start = 16.dp, top = 16.dp)
                    .clickable(onClick = onArrowClick)
                    .layoutId(R.id.arrowBackBtn),
                onArrowClick = {enabled = false}

            )
Run Code Online (Sandbox Code Playgroud)

我只是即兴创作的最后一行 - onArrowClick 被识别,但“启用”未被识别

Gab*_*tti 14

使用内部状态来定义可组合项是否可单击。什么时候enabled图像true可以点击,什么时候false图像不可点击。

就像是:

var enabled  by rememberSaveable { mutableStateOf(true) }

Image(
    painterResource(R.drawable.ic_add_24px),
    contentDescription = "back",
    modifier = Modifier
        .padding(start = 16.dp, top = 16.dp)
        .clickable(
            enabled = enabled,
            onClick = { enabled = false } 
        )
        .layoutId("arrow")
)
Run Code Online (Sandbox Code Playgroud)

要再次启用只需设置enabled = true。例如:

Button(onClick = {enabled = true}){
    Text("Enable again")
}
Run Code Online (Sandbox Code Playgroud)