博客专栏:Android初级入门UI组件与布局
源码:通过网盘分享的文件:Android入门布局及UI相关案例
链接: https://pan.baidu.com/s/1EOuDUKJndMISolieFSvXXg?pwd=4k9n 提取码: 4k9n
在 Android 开发中,用户与应用的交互往往离不开各种“选择”操作,例如:
为了应对这些常见场景,Android 提供了三类核心选择控件:
本篇将继续《Android UI 组件系列》,系统讲解这几类选择控件的使用方法、选中状态的监听方式,以及它们在实际项目中的常见用法和注意事项。
无论你正在开发用户注册页,还是设置中心界面,这些控件都将是你的“得力工具”。
checkBox 是 Android 中最常见的多选控件,允许用户从一组选项中选择任意多个。它继承自 CompoundButton,拥有 isChecked 属性,并支持监听选中状态变化。
典型的使用场景包括:选择兴趣爱好、可选服务、偏好设置等。
以下是一个简单的多选界面,用户可以选择自己喜欢的编程语言:
接下来我们在 MainActivity.kt 中处理用户点击“提交选择”后的逻辑:
/**
* 处理checkbox的选择和提交
* 在这个方法中,我们获取了三个复选框和一个提交按钮。
* 当用户点击提交按钮时,我们检查每个复选框是否被选中,
* 如果被选中,就将对应的语言添加到一个列表中,并显示一个Toast消息。
*/
private fun handleCheckbox() {
val javaCheckBox = findViewById(R.id.checkbox_java)
val kotlinCheckBox = findViewById(R.id.checkbox_kotlin)
val pythonCheckBox = findViewById(R.id.checkbox_python)
val submitButton = findViewById
如果你希望实时监听每个 CheckBox 的选中与否(比如用于即时展示或保存状态),可以使用如下方式:
javaCheckBox.setOnCheckedChangeListener { _, isChecked ->
Log.d("CheckBox", "Java 选中状态: $isChecked")
}
当用户需要从多个选项中只能选择一个时,RadioButton 是首选控件。为了自动管理多个按钮的选中状态,通常需要配合 RadioGroup 使用。
以下是一个用于选择性别的单选按钮组示例:
在点击“确认选择”时,我们可以获取当前被选中的 RadioButton:
/**
* 处理单选按钮的选择
* 在这个方法中,我们可以添加逻辑来处理单选按钮的选择。
* 例如,我们可以获取单选按钮的状态,并在用户选择后显示一个Toast消息。
*/
private fun handleRadioButton() {
val radioGroup = findViewById(R.id.radio_group_gender)
val btnConfirm = findViewById
如果你想在用户切换选项时立即响应,而不是等点击按钮,可以设置监听器:
radioGroup.setOnCheckedChangeListener { group, checkedId ->
val gender = when (checkedId) {
R.id.radio_male -> "男"
R.id.radio_female -> "女"
else -> "未知"
}
Log.d("RadioGroup", "当前选中性别:$gender")
}
在 Android 的设置界面中,我们经常会看到用于开关某项功能的控件,比如开启通知、启用 Wi-Fi、是否使用暗色模式等。实现这类功能的推荐方式是使用 Switch 或 ToggleButton。
这两个控件本质上都是继承自 CompoundButton,具备布尔型开关状态,并支持监听变化。
控件 |
说明 |
推荐使用场景 |
---|---|---|
Switch |
类似 iOS 的滑动开关,现代化视觉 |
系统设置、偏好项开关 |
ToggleButton |
两态按钮,样式旧、可自定义文字 |
表达“启用/禁用”的功能项 |
我们用 Switch 控件表示“是否开启通知”,并用 ToggleButton 表示“是否启用黑暗模式”:
/**
* 处理开关和切换按钮
* 在这个方法中,我们可以添加逻辑来处理开关和切换按钮的状态。
* 例如,我们可以在用户切换开关时显示一个Toast消息。
*/
private fun handleSwitch() {
val switchNotify = findViewById(R.id.switch_notify)
val toggleDarkMode = findViewById(R.id.toggle_dark_mode)
switchNotify.setOnCheckedChangeListener { _, isChecked ->
val status = if (isChecked) "已开启通知" else "已关闭通知"
Toast.makeText(this, status, Toast.LENGTH_SHORT).show()
}
toggleDarkMode.setOnCheckedChangeListener { _, isChecked ->
val status = if (isChecked) "深色模式已启用" else "深色模式已关闭"
Toast.makeText(this, status, Toast.LENGTH_SHORT).show()
}
}
Switch 支持 thumbTint 和 trackTint 属性,分别修改滑块颜色和轨道颜色。
ToggleButton 可以通过 textOn / textOff 设置切换时的文字,也可以自定义背景。
控件类型 |
推荐场合 |
不推荐用法 |
---|---|---|
Switch |
设置项、偏好项、状态切换 |
表达“操作”类逻辑,比如“提交” |
ToggleButton |
样式个性化场景,可替代按钮 |
视觉风格过时,非 Material 风格推荐避免使用 |
在 Android UI 开发中,针对“用户选择”的不同需求,我们可以灵活使用不同的控件来实现:
控件类型 |
选择方式 |
典型用途 |
是否推荐 |
---|---|---|---|
CheckBox |
多选 |
兴趣偏好、复选列表 |
✅ 推荐 |
RadioButton + RadioGroup |
单选 |
性别、支付方式等 |
✅ 推荐 |
Switch |
开关 |
设置项开/关 |
✅ 强烈推荐 |
ToggleButton |
开关 |
自定义样式场景 |
⚠️ 有替代品,谨慎使用 |
这几类控件都继承自 CompoundButton,用法相似:通过 isChecked 获取状态,通过 setOnCheckedChangeListener监听用户交互,非常适合快速搭建交互界面。
随着 Jetpack Compose 的兴起,构建 UI 的方式正在逐步从 XML 向 Kotlin 函数组合转变。但对于大多数仍采用传统 View 系统的项目来说,掌握这些基本控件的使用依旧是 Android 开发的重要基础。
博客专栏:Android初级入门UI组件与布局
博客Demo: