run

code
package com.example.composecheckbox
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
ComposeCheckBoxTheme {
Surface(
modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background
) {
CheckBoxScreen()
}
}
}
}
}
@Composable
fun CheckBoxScreen() {
val (checked1, setChecked1) = remember { mutableStateOf(false) }
val (checked2, setChecked2) = remember { mutableStateOf(false) }
val (checked3, setChecked3) = remember { mutableStateOf(false) }
val allChecked = (checked1 && checked2 && checked3)
Column(verticalArrangement = Arrangement.Center) {
CheckBoxRow(
text = "전체 동의",
value = allChecked,
onClick = {
if (allChecked) {
setChecked1(false)
setChecked2(false)
setChecked3(false)
} else {
setChecked1(true)
setChecked2(true)
setChecked3(true)
}
},
)
CheckBoxRow(text = "동의1", value = checked1, onClick = { setChecked1(!checked1) })
CheckBoxRow(text = "동의2", value = checked2, onClick = { setChecked2(!checked2) })
CheckBoxRow(text = "동의3", value = checked3, onClick = { setChecked3(!checked3) })
}
}
@Composable
fun CheckBoxRow(text: String, value: Boolean, onClick: (Any) -> Unit) {
Row(verticalAlignment = Alignment.CenterVertically) {
Checkbox(checked = value, onCheckedChange = onClick)
ClickableText(
text = AnnotatedString(text), onClick = onClick, modifier = Modifier.fillMaxWidth()
)
}
}