===== 소개 =====
고소해앱에서 라디오버튼을 구현해서 다음과 같이 사용하고 있다.
{{:android:radiobutton.png?600|radiobutton}}
===== 스니펫 =====
특별히 설명할게 없다.
@Composable
fun KindRadioGroup(
mItems: List,
selected: String,
setSelected: (selected: String) -> Unit,
) {
Row(
modifier = Modifier.fillMaxWidth().padding(8.dp),
horizontalArrangement = Arrangement.SpaceEvenly,
verticalAlignment = Alignment.CenterVertically
) {
mItems.forEach { item ->
Row(
verticalAlignment = Alignment.CenterVertically,
) {
RadioButton(
selected = selected == item,
onClick = {
setSelected(item)
},
enabled = true,
)
Text(text = item, modifier = Modifier.padding(start = 8.dp), fontSize = 16.sp, fontFamily = ttoppokki, fontWeight = FontWeight.SemiBold)
}
}
}
}
===== 호출하기 =====
위의 스니펫은 아래와 같이 호출하면 된다.
val (selected, setSelected) = remember { mutableStateOf(convertBooleanToYeah(medicalHistory.hasTreatment)) }
ElevatedCard(elevation = CardDefaults.cardElevation(defaultElevation = 6.dp), modifier = Modifier
.fillMaxWidth()
.padding(6.dp)) {
Column(
modifier = Modifier
.fillMaxWidth()
.padding(8.dp), horizontalAlignment = Alignment.Start
) {
KindRadioGroup(
mItems = kinds,
selected, setSelected
)
if (selected == "예")
{
medicalHistory = medicalHistory.copy(hasTreatment = true)
medicalHistory = medicalHistory.copy(visitingRecord =
contactTextField(labelValue = "통원횟수(진료포함)", inputValue = medicalHistory.visitingRecord, example = "예 : 총 3회, ", painterResource = painterResource(id = R.drawable.baseline_edit_note_24)))
medicalHistory = medicalHistory.copy(hospitalizedRecord =
contactTextField(labelValue = "입원일수", inputValue = medicalHistory.hospitalizedRecord, example = "예 : 일주일, 없음, ", painterResource = painterResource(id = R.drawable.baseline_edit_note_24)))
}else
{
medicalHistory = medicalHistory.copy(hasTreatment = false)
medicalHistory = medicalHistory.copy(plannedToTreatment = dropDownTextField(
items = listOf("자연 치유가 가능 합니다.", "외상은 없으나 병원 진료를 고려 중 입니다.", "병원에 예약을 하였습니다."),
inputString = medicalHistory.plannedToTreatment
))
}
}
}