[Android] Jetpack Compose Checkbox 전체선택 로직

💜Dabo (개발자 다보)·2023년 4월 14일
1

Compose 코드 모음집

목록 보기
1/2
post-thumbnail

run

code

package com.example.composecheckbox

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            ComposeCheckBoxTheme {
                // A surface container using the 'background' color from the theme
                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()
        )
    }
}
profile
𝙸 𝚊𝚖 𝚊 𝚌𝚞𝚛𝚒𝚘𝚞𝚜 𝚍𝚎𝚟𝚎𝚕𝚘𝚙𝚎𝚛 𝚠𝚑𝚘 𝚎𝚗𝚓𝚘𝚢𝚜 𝚍𝚎𝚏𝚒𝚗𝚒𝚗𝚐 𝚊 𝚙𝚛𝚘𝚋𝚕𝚎𝚖. 🇰🇷👩🏻‍💻

0개의 댓글