android compose CheckBox, RadioGroup 使用

android compose CheckBox, RadioGroup 使用

复制代码
/**
 * Author : wn
 * Email : maoning20080809@163.com
 * Date : 2026/1/3 20:02
 * Description :
 */
class CheckBoxActivity : ComponentActivity(){

    private var mActivity : Activity? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        mActivity = this
        setContent {
            Column() {
                testCheckBox()
                Spacer(modifier = Modifier.height(20.dp))
                testRadioGroup()
            }
        }
    }

    @Preview
    @Composable
    private fun testCheckBox(){
        //篮球
        var checkedStateB by remember { mutableStateOf(false) }
        //足球
        var checkedStateF by remember { mutableStateOf(false) }
        Column(modifier = Modifier.padding(20.dp)) {
            Row() {
                Text(text = "请选择", fontSize = 20.sp)
            }

            Row() {
                Text(text = "篮球", fontSize = 20.sp)
                Checkbox(
                    checked = checkedStateB,
                    onCheckedChange = {checkedStateB = it},
                    colors = CheckboxDefaults.colors(
                        checkedColor = Color.Green,
                        uncheckedColor = Color.Red
                    ),
                    modifier = Modifier.size(30.dp),
                    enabled = true,
                    interactionSource = remember { MutableInteractionSource() }
                )

                Text(text = "足球", fontSize = 20.sp)
                Checkbox(
                    checked = checkedStateF,
                    onCheckedChange = {checkedStateF = it},
                    colors = CheckboxDefaults.colors(
                        checkedColor = Color.Green,
                        uncheckedColor = Color.Red
                    ),
                    modifier = Modifier.size(30.dp),
                    enabled = true,
                    interactionSource = remember { MutableInteractionSource() }
                )

                Button(onClick = {
                    Toast.makeText(mActivity, "选择结果:${checkedStateB} , ${checkedStateF}", Toast.LENGTH_LONG).show()
                    checkedStateB
                }) {
                    Text("选择结果")
                }
            }
        }

    }

    @Preview
    @Composable
    private fun testRadioGroup(){
        val options = listOf("Option A", "Option B", "Option C")
        var selectedIndex by remember { mutableStateOf(0) }

        Text(text = "单选", modifier = Modifier.padding(start = 20.dp))
        Column(modifier = Modifier.padding(10.dp)) {
            options.forEachIndexed { index, option ->
                Row(modifier = Modifier.fillMaxWidth().padding(10.dp),
                    ){
                    RadioButton(selected =  index == selectedIndex,
                        onClick = {selectedIndex = index})
                    Text(text = option, style = MaterialTheme.typography.bodyLarge,
                        modifier = Modifier.padding(start = 8.dp)
                    )
                }
            }
        }
        Button(onClick = {
            Toast.makeText(mActivity, "单选结果:${selectedIndex} , ${options[selectedIndex]}", Toast.LENGTH_LONG).show()
        }) {
            Text(text = "单选结果")
        }

    }
}
相关推荐
杉氧1 小时前
副作用 (Side Effects) 全攻略:如何像大师一样掌控 Composable 的生命周期?
android·架构·android jetpack
唐青枫5 小时前
别再把 inline 当性能开关:Kotlin 内联、noinline、crossinline 与 reified 实战详解
kotlin
Kapaseker6 小时前
Kotlin Toolchain 0.11 发布:主要是把 Amper 干没了
android·kotlin
黄林晴6 小时前
AndroidX 官宣信号:Compose版WebView要来了!
kotlin
三少爷的鞋7 小时前
Android 现代架构不需要事件总线进阶篇
android
杉氧21 小时前
深入理解 Compose 重组机制:快照系统如何驱动 UI 精准刷新?
android·架构·android jetpack
召钱熏21 小时前
状态枚举正确≠渲染正确:一个语音按钮的状态机边界修复实录
android·前端
杉氧1 天前
深度解析:Jetpack Compose 核心架构与底层原理 —— 十年安卓老兵的“破茧重生”
android·架构·android jetpack
通玄1 天前
Jetpack Compose 入门系列(七):ViewModel 与界面状态管理
android
落魄Android在线炒饭1 天前
Android Framework 开发技巧:android.jar 生成与系统快速编译验证
android