複選框
複選框允許用戶從列表裏選擇一個或多個選項。通常,你應該在垂直列表中顯示每個複選框選項。
在你的佈局中通過創建 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()
方法達到目的。