重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在你的选项中加入 android:checked="true" 这样的代码也就是默认选中
目前创新互联公司已为数千家的企业提供了网站建设、域名、网站空间、网站托管、服务器托管、企业网站设计、尼河口网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
例如:
TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="爱好:"
android:width="50px"
android:height="30px" /
CheckBox android:text="篮球"
android:id="@+id/like1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /
CheckBox android:text="足球"
android:id="@+id/like2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"/ //我在足球这里加了个默认选中
CheckBox android:text="下棋"
android:id="@+id/like3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/
CheckBox android:text="游泳"
android:id="@+id/like4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/
AlertDialog.Builder有现成的API可以实现显示复选框的内容。
1.创建AlertDialog.Builder并设置数据源
AlertDialog.Builder builder = new Builder(context);
builder.setTitle("复选框"); //设置对话框标题
builder.setIcon(android.R.drawable.ic_menu_more); //设置对话框标题前的图标
final String[] data = getResources().getStringArray(R.array.radio); //通过resources 得到strings.xml中的字符串数组
boolean[] state = new boolean[data.length];
for(int i=0; idata.length; i++){
state[i] = sboolean.get(i); //将状态集合中的数据取出来,下次选择时候会默认选中
}
2.注册点击事件,并记录复选的数据
/*
* 第一个参数是,数据原,可以是数组,也可以传strings.xml那的字符串ID,但是建议用数组,因为多选监听返回的是数组的标下
* 第二个参数是,默认的选中位置,是个boolean数组,对应item的位置
* 第三个是列表点击监听事件
*/
builder.setMultiChoiceItems(R.array.radio, state, new DialogInterface.OnMultiChoiceClickListener() {//注册单选择监听事件
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if(isChecked){
Toast.makeText(context,"你选择了: " + data[which], Toast.LENGTH_SHORT).show();
checkBoxData.add(data[which]); //选择的时候要保存起来
}else{
Toast.makeText(context,"你取消了: " + data[which], Toast.LENGTH_SHORT).show();
checkBoxData.remove(data[which]); //取消选中的时候要删除掉
}
sboolean.put(which, isChecked); //每次选择都要记录下这个item的状态
}
});
3.增加确定和取消按键
builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(context, "你点了确定,选择的是: " + checkBoxData.toString(), Toast.LENGTH_SHORT).show();
}
});
4.设置dialog的相关参数,并弹出
builder.setNegativeButton("取消", null); //取消不做任何处理
builder.setCancelable(true); //设置按钮是否可以按返回键取消,false则不可以取消
AlertDialog dialog = builder.create(); //创建对话框
dialog.setCanceledOnTouchOutside(true); //设置弹出框失去焦点是否隐藏,即点击屏蔽其它地方是否隐藏
dialog.show();
提到只读,很容易想到使用readonly属性,但是对于复选框来说,这个属性和期望得到的效果是有差别的。原因在于readonly属性关联的是页面元素的value属性(例如textbox,设置了readonly就不能修改输入框的文本内容),而复选框的勾选/取消并不改变其value属性,改变的只是一个checked状态。所以对于checkbox来说,设置了readonly,仍然是可以勾选/取消的。效果如下:
input
type="text"
name="realname"
value="只读的文本内容..."
readonly="readonly"
/
input
type="checkbox"
name="optiona"
readonly="readonly"
/option
a
input
type="checkbox"
name="optionb"
readonly="readonly"
/option
b
input
type="checkbox"
name="optionc"
readonly="readonly"
/option
c
option
a
option
b
option
c
和readonly类似的,还有一个disabled属性,这个属性的作用是设置页面元素为不可用,即不可进行任何交互操作(包括不可修改value属性、不可修改checked状态等)。效果如下:
input
type="text"
name="realname"
value="输入的文本内容..."
disabled="disabled"
/
input
type="checkbox"
name="optiona"
disabled="disabled"
/option
a
input
type="checkbox"
name="optionb"
disabled="disabled"
/option
b
input
type="checkbox"
name="optionc"
disabled="disabled"
/option
c
option
a
option
b
option
c
从上面我们可以看到,无论是readonly还是disabled,都没有实现我们期望的效果。既然直接实现不了,那么我们可以变通一下,模拟实现。代码如下:
input
type="checkbox"
name="chkAllowed"
onclick="return
false;"
checked="checked"
/
开关 (On/Off Switch) 出现在列表项上, 表示这个列表项还有详细页面 (比如设置中的 Wi-Fi, 你点击列表项是进入 Wi-Fi 详情, 点击开关是开/关 Wi-Fi). 而选框 (Checkbox) 不具备此功能 (即当用户点击 Checkbox 或列表项都是勾选/取消勾选, 不会进入详情页面).
故此, 当你认为这个设置有必要加入详情页面的时候, 即可采用 On/Off Switch, 没有详情页的话, 就用 Checkbox.
另外, 如果这个设置的说明文字繁多, 在列表中无法显示完全的话, 建议单独新开一个详细页面, 并在详细页面中使用开关 (比如设置中的 Android Beam 功能开关).
1.首先在drawable文件夹中添加drawable文件checkbox_style.xml。
?xml version="1.0" encoding="utf-8"?
selector xmlns:android=""
item android:drawable="@drawable/checkbox_pressed" android:state_checked="true"/
item android:drawable="@drawable/checkbox_normal" android:state_checked="false"/
item android:drawable="@drawable/checkbox_normal"/
/selector
2.在values文件夹下的styles.xml文件中添加CustomCheckboxTheme样式。
style name="CustomCheckboxTheme" parent="@android:style/Widget.CompoundButton.CheckBox"
item name="android:button"@drawable/checkbox_style/item
/style
3.在布局文件中使用CustomCheckboxTheme样式。
CheckBox
android:id="@+id/select_all"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/CustomCheckboxTheme" /
使用到的图片资源
checkbox_normal.png
checkbox_pressed.png