一、多选框基础
多选框(Checkbox)由 选择点 和 提示文字 两部分组成
XML中定义组件:
- ohos:marked:true表示选中,false表示未被选中
- ohos:check_element:传数据是图片,表示设置多选框的样式
Java中定义业务逻辑:
- isChecked():判断多选框是否被选中,返回值为boolean类型,true表示选中,false表示未选中
- setCheckedStateChangedListener(context):设置多选框监听事件
public class MainAbilitySlice extends AbilitySlice implements AbsButton.CheckedStateChangedListener {@Overridepublic void onStart(Intent intent) {super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_main);//1、找到组件Checkbox cb = (Checkbox) findComponentById(ResourceTable.Id_cb);//2、设置多选框组件//true:表示选中, false表示未选中//cb.setChecked(false);//判断当前的多选框是否被选中
// boolean checked = cb.isChecked();
// if(checked) {
// MyToast.showDialog(this, "被选中了");
// } else {
// MyToast.showDialog(this, "没有选中");
// }//给多选框添加状态监听事件cb.setCheckedStateChangedListener(this);}@Overridepublic void onActive() {super.onActive();}@Overridepublic void onForeground(Intent intent) {super.onForeground(intent);}//当多选框的状态改变后就自动被调用//参数1:AbsButton:继承于Button,其实就代表状态被改变的多选框//参数2:表示当前多选框的状态,true:选中,false:未选中@Overridepublic void onCheckedChanged(AbsButton absButton, boolean b) {if(b) {MyToast.showDialog(this, "被选中了");} else {MyToast.showDialog(this, "未被选中");}}
}
二、案例分析
做一个时间格式调整器,通过多选框选择是否去显示年、月、日、时、分、秒等
XML中定义组件:
Java中撰写逻辑代码:
本案例设计多个组件,其中有6个多选框,如果一个一个判断多选框的状态太麻烦,现在通过一个撰写一个检测方法来判断是否被选中
public class MainAbilitySlice extends AbilitySlice implements Component.ClickedListener {Clock clock = null; //时钟组件Button but = null; //确定按钮@Overridepublic void onStart(Intent intent) {super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_main);//1、找到组件clock = (Clock) findComponentById(ResourceTable.Id_clock);but = (Button) findComponentById(ResourceTable.Id_submit);//2、按钮绑定点击事件but.setClickedListener(this);}@Overridepublic void onActive() {super.onActive();}@Overridepublic void onForeground(Intent intent) {super.onForeground(intent);}@Overridepublic void onClick(Component component) {//判断6个多选框的状态String year = check(ResourceTable.Id_year, "yyyy年");String mouth = check(ResourceTable.Id_mouth, "MM月");String day = check(ResourceTable.Id_day, "dd日");String hour = check(ResourceTable.Id_hour, "HH:");String minute = check(ResourceTable.Id_minutes, "mm:");String second = check(ResourceTable.Id_second, "ss");//拼接时间显示格式String result = year + mouth + day + " " + hour + minute + second;//格式判断, 也即 result == " "if(result.length() == 1) {MyToast.showDialog(this, "不能一个都不选");return;}//设置时间格式clock.setFormatIn24HourMode(result);}//定义一个方法//作用:判断多选框有没有被选中//如果选中了,就返回字符串//如果没有被选中,则返回一个长度为0的字符串public String check(int id, String result) {//根据传递过来的id判断多选框选中与否Checkbox cb = (Checkbox) findComponentById(id);//判断当前的框是否被选中if(cb.isChecked()) {return result;} else {return "";}}
}