复选框
复选框允许用户从列表里选择一个或多个选项。通常,你应该在垂直列表中显示每个复选框选项。
在你的布局中通过创建 CheckBox 标签来创建复选框选项。因为用户可以从一组复选框选项里选择多个项目,且每个复选框都是分开管理的,所以你必须为每个复选框注册点击监听器。
响应点击事件
用户选择复选框时,CheckBox
对象会收到on-click事件。
在XML布局文件中的<CheckBox>元素中添加 android:onClick 属性就可以为复选框定义点击事件处理程序了。这个属性的值必须是你调用来响应点击事件的方法名。使用这个布局的 Activity 必须实现相应的方法。
例如,这是个有一对 CheckBox 对象的列表:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<CheckBox android:id="@+id/checkbox_meat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/meat"
android:onClick="onCheckboxClicked"/>
<CheckBox android:id="@+id/checkbox_cheese"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/cheese"
android:onClick="onCheckboxClicked"/>
</LinearLayout>
在使用这个布局的 Activity
里,下面的方法会为两个复选框处理点击事件:
public void onCheckboxClicked(View view) {
// 这个视图现在是否已被选中?
boolean checked = ((CheckBox) view).isChecked();
// 检查哪个复选框被点击过
switch(view.getId()) {
case R.id.checkbox_meat:
if (checked)
// 在三明治上放点肉
else
// 移除肉
break;
case R.id.checkbox_cheese:
if (checked)
// 加点起司
else
// 我有乳糖不耐症
break;
// 待办:蔬菜三明治
}
}
你在 android:onClick 属性中声明的方法名必须和上面显示的一样,而且这个方法必须是:
小贴士:如果你需要自己改变复选框状态(比如加载一个保存过的 CheckBoxPreference),那么你可以使用 setChecked(boolean)
或 toggle()
方法达到目的。