1. 程式人生 > >CheckBox和RadioButton

CheckBox和RadioButton

CheckBox

CheckBox是複選框列表。
使用CheckBox步驟如下:

  1. 在xml中新增元素CheckBox;
  2. 在元素CheckBox中新增屬性android:onClick;
  3. 在對應的activity中實現對應的方法並相應。

xml的程式碼如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <CheckBox android:id="@+
id/city_nj"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="clickCheckboxes" android:text="南京" /> <CheckBox android:id="@+id/city_bj" android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_below="@id/city_nj" android:onClick="clickCheckboxes" android:text="北京" /> <CheckBox android:id="@+id/city_sh" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/city_bj" android:onClick="clickCheckboxes" android:text="上海" /> </RelativeLayout>

注意:需為每一個CheckBox設定屬性android:onClick。

對應activity中的程式碼如下:

package com.example.sywyg.checkboxes_radiobutton_test;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.CheckBox;
import android.widget.Toast;

/**CheckBox練習,注意程式碼中的註釋內容
 * @author sywyg
 * @time 2015/4/7
 */

public class MainActivity extends ActionBarActivity {
    private CheckBox cb_nj;
    private CheckBox cb_bj;
    private CheckBox cb_sh;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        cb_nj = (CheckBox)findViewById(R.id.city_nj);
        cb_bj = (CheckBox)findViewById(R.id.city_bj);
        cb_sh = (CheckBox)findViewById(R.id.city_sh);
    }
    //相應事件的方法必須是public修飾,返回型別為void,僅有一個引數(被點選的CheckBox,這裡用View)
    public void clickCheckboxes(View view){
        //判斷是選中,還是放棄選擇
        boolean checked = ((CheckBox)view).isChecked();
        //可以通過setChecked()設定預設選擇情況
        switch (view.getId()){
            case R.id.city_nj:
                if(checked){
                    Toast.makeText(this,"您選擇了:" + cb_nj.getText().toString(),Toast.LENGTH_SHORT).show();
                }else{
                    Toast.makeText(this,"您放棄選擇:" + cb_nj.getText().toString(),Toast.LENGTH_SHORT).show();
                }
                break;
            case R.id.city_bj:
                if(checked){
                    Toast.makeText(this,"您選擇了:" + cb_bj.getText().toString(),Toast.LENGTH_SHORT).show();

                }else{
                    Toast.makeText(this,"您放棄選擇:" + cb_bj.getText().toString(),Toast.LENGTH_SHORT).show();
                }
                break;
            case R.id.city_sh:
                if(checked){
                    Toast.makeText(this,"您選擇了:" + cb_sh.getText().toString(),Toast.LENGTH_SHORT).show();

                }else{
                    Toast.makeText(this,"您放棄選擇:" + cb_sh.getText().toString(),Toast.LENGTH_SHORT).show();
                }
                break;
        }
    }
}

結果演示:

checkboxes演示

當然可以通過自定義設定框框和文字內容,例如android文件中的圖片:
圖片
是通過TextView和CheckBox(文字內容為空)組合實現的。

RadioButton

RadioButton是單選按鈕,使用者只能從一組選項當中選擇一個。對於每個選項可以並排(都顯示出來),或者通過spinner控制選項。
步驟和CheckBox一樣,這裡直接上程式碼:

xml程式碼:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
    <RadioGroup
        android:id="@+id/rd"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >
        <RadioButton
            android:id="@+id/rb1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="clickRadioButton"
            android:text="Yes"
            />
        <RadioButton
            android:id="@+id/rb2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="clickRadioButton"
            android:text="cen"
            />
        <RadioButton
            android:id="@+id/rb3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="clickRadioButton"
            android:text="No"
            />
    </RadioGroup>
</RelativeLayout>

注意:RadioGroup是LinearLayout子類,需要指定屬性android:orientation值。

activity程式碼:

package com.example.sywyg.checkboxes_radiobutton_test;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.RadioButton;
import android.widget.Toast;

/**RadioButton練習,注意註釋
 * @author sywyg
 * @time 2015/4/7
 */

public class MainActivity extends ActionBarActivity {
    private RadioButton rb_yes;
    private RadioButton rb_cen;
    private RadioButton rb_no;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        rb_yes = (RadioButton)findViewById(R.id.rb1);
        rb_cen = (RadioButton)findViewById(R.id.rb2);
        rb_no = (RadioButton)findViewById(R.id.rb3);
        //設定預設選項
        rb_yes.setChecked(true);
    }
    //響應事件
    public void clickRadioButton(View view){
        boolean checked = ((RadioButton)view).isChecked();
        if(checked){
            //這裡換一種方式,不用switch了
               Toast.makeText(this, "您選擇了:" + ((RadioButton)view).getText().toString(), Toast.LENGTH_SHORT).show();
            }
    }
}

結果演示:

RadioButton演示

遇到的問題:

  1. 在xml中不會提示你寫的根元素是否出錯,這點記住;
  2. 在遇到bug時,首先看準(務必仔細看)DDMS中提示哪錯了,在程式碼中找到提示的錯誤地方,仔細檢查。