Checkboxes(複選框)

複選框

複選框允許用戶從列表裏選擇一個或多個選項。通常,你應該在垂直列表中顯示每個複選框選項。

在你的佈局中通過創建 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 屬性中聲明的方法名必須和上面顯示的一樣,而且這個方法必須是:

  • 公共的
  • 返回void
  • 定義一個 View 作爲它唯一的參數(它會作爲被點擊的 View) 

小貼士:如果你需要自己改變複選框狀態(比如加載一個保存過的 CheckBoxPreference),那麼你可以使用 setChecked(boolean) 或 toggle() 方法達到目的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章