Android widget之CompoundButton

Android widget之CompoundButton

具有兩個狀態的按鈕,已選中或未選中。當按下或點擊按鈕時,狀態會自動更改。

直接繼承至Button 直接子類
CheckBox RadioButton Switch SwitchCompat ToggleButton 間接子類
AppCompatCheckBox AppCompatRadioButton

使用

相比較Button而言多出瞭一個監聽事件(接口)

CompoundButton.OnCheckedChangeListener

當復合按鈕的檢查狀態發生變化時調用。

實現方法:onCheckedChanged( CompoundButton buttonView,boolean isChecked)

buttonView 復合按鈕視圖的狀態。 isChecked buttonView的新狀態。

公共方法

簡單介紹幾個常用的

isChecked() — 獲取當前狀態 performClick() — 調用此視圖的OnClickListener(如果已定義) setChecked(boolean checked) — 更改這個按鈕的狀態 setOnCheckedChangeListener(CompoundButton.OnCheckedChangeListener listener)
當這個按鈕的檢查狀態發生變化時,註冊一個回調 toggle() — 將視圖的狀態更改為當前狀態的逆(反向)

子類

CheckBox

復選框:可以選中或取消選中的特定類型的雙狀態按鈕。

例:



    
    
public void onCheckboxClicked(View view) {
    // Is the view now checked?
    boolean checked = ((CheckBox) view).isChecked();

    // Check which checkbox was clicked
    switch(view.getId()) {
        case R.id.checkbox_meat:
            if (checked)
                // Put some meat on the sandwich
            else
                // Remove the meat
            break;
        case R.id.checkbox_cheese:
            if (checked)
                // Cheese me
            else
                // I'm lactose intolerant
            break;
        // TODO: Veggie sandwich
    }
}
public class MyActivity extends Activity {
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.content_layout_id);
         final CheckBox checkBox = (CheckBox) findViewById(R.id.checkbox_id);
         if (checkBox.isChecked()) {
             checkBox.setChecked(false);
         }
     }
 }

註:AppCompatCheckBox作為其子類用法差別不大!

RadioButton

單選按鈕:是可以選中或取消選中的雙狀態按鈕。當單選按鈕被取消選中時,用戶可以單擊來選中它。

註:單選按鈕通常與RadioGroup在一起使用。當多個單選按鈕在RadioGroup內時,檢查一個單選按鈕將取消選中所有其他單選按鈕。



    
    
public void onRadioButtonClicked(View view) {
    // Is the button now checked?
    boolean checked = ((RadioButton) view).isChecked();

    // Check which radio button was clicked
    switch(view.getId()) {
        case R.id.radio_pirates:
            if (checked)
                // Pirates are the best
            break;
        case R.id.radio_ninjas:
            if (checked)
                // Ninjas rule
            break;
    }
}

註:AppCompatRadioButton作為其子類用法差別不大!

Switch

開關:是一個雙狀態切換開關小部件,可以在兩個選項之間進行選擇。用戶可以來回拖動“拇指”來選擇所選擇的選項,或者隻需輕按以切換,就像復選框一樣。該text 屬性控制交換機標簽中顯示的文本,而 文本off和on文本控制拇指上的文本。

xml屬性 公共方法 作用效果
android:showText setShowText(boolean) 是否顯示 打開/關閉 文本
android:textOff setTextOff(CharSequence) 當開關處於 關閉 狀態時使用的文本
android:textOn setTextOn(CharSequence) 當開關在 開打 狀態時使用的文本
android:track setTrackResource(int) 開關拇指滑動的“軌跡”

ToggleButton

顯示 打開/關閉 的狀態的按鈕,默認情況下伴隨文本“ON”或“OFF”。

與Switch差別不大!

You May Also Like