单选按钮组
介绍单选按钮RadioButton之前,先介绍一下单线按钮的容器RadioGroup
RadioGroup的继承于LinearLayout,它是专门用来容纳单选按钮RadioButton的容器
一个RadioGroup容器为一个单选组
RadioGroup的Orientation属性,决定选项的排列方式为横向或纵向,默认为vertical
在RadioGroup中添加RadioButton控件即可添加一个单选选项
RadioButton的checked属性可以设定RadioButton是否被选中,默认值为false
单选项RadioButton的监听器
若要RadioButton对点击(选择)有响应必须使用它的setOnCheckedChangeListener方法绑定监听器针对单选监听器要实现 接口
RadioGroup.OnCheckedChangeListener()
并重写该接口的onCheckedChanged方法:
public void onCheckedChanged(RadioGroup group, @IdRes int checkedId)
其中group是当前点击或进行选择的RadioGroup选项组,
checkedId是当前被选中的子项目RadioGroup的ID(对应XML)
通常在此方法中处理点击后的相应行为来对不同的子项目RadioButton进行响应
switch(checkId){
case xxx:
....
case xxx:
...
...
}
多选按钮
多选项(CheckBox)和单选项(RadioButton)不一样,不用把多个选项放到一个组中每个CheckBox都单独是一个选项,而且可以多选
其属性checked 决定其是否被选中,默认为false
多选项CheckBox的监听器
使用CheckBox的setOnCheckedChangeListener方法来绑定监听器监听器要实现接口
CompoundButton.OnCheckedChangeListener (注意与RadioButton的监听器区分,属于同类中)
并实现接口的void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 方法
方法中buttonView是被点击(checked属性改变)的CheckBox实例的引用,isChecked为被引用的CheckBox实例checked属性的值
这个方法可以对checked属性发生改变的CheckBox作出响应
通常会使用判断语句根据isChecked的值作出不同响应
Switch 开关
注意区分大小写(switch)和CheckBox类似,个人认为只是外观有区别
也是使用CompoundButton.OnCheckedChangeListener 的实现类的实例作为监听器
三个控件的父类
RadioGroup,CheckBox,Switch都是抽象类CompoundButton的子类而CompoundButton是Button的子类并实现了Checkable接口
因此Button的所有属性这三个控件都可使用