天天看點

Android--(11)--解讀單選(RadioButton)和複選(CheckBox)按鈕

一.單選按鈕

1.單選按鈕類:RadioButton

android:checked=”true”     設定該按鈕是否選中;

android:button=”@null”     去掉按鈕前的原點;

android:drawableRight=”@android:drawable/but_radio”     将圓形按鈕設定在左側顯示

2.單選按鈕控件通常與RadioGroup搭配使用。

     RadioGroup是LinearLayout的子類,用于将多個單選按鈕組合為一組。

     同一按鈕組内的單選按鈕隻能有一個被選中。

     RadioGroup最主要的xml屬性是android:checkedButton,該屬性用于設定組内預設被選中的單選按鈕的id。RadioGroup最主要的方法有getCheckedRadioButtonId()和check(int radioButtonId)

<RadioGroup
       android:orientation = "horizental">
    <RadioButton/>
    <RadioButton/>
    <RadioButton/>
    <RadioButton/>
</RadioGroup>
           

3.單選按鈕的事件處理:

     以RadioGroup為機關進行處理 setOnCheckedChangListener(new OnCheckedChangListener(){匿名方法})

     可以使用RadioGroup.getCheckedRadioButtonId()來獲得選中的單選按鈕的id值;

group.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            //對按鈕組添加按鈕事件;
            @Override
            public void onCheckedChanged(RadioGroup arg0, int id) {
            //第一個參數為目前按鈕組對象;第二個參數為目前按鈕組選中的按鈕的id值;
                // TODO Auto-generated method stub
                if (R.id.radio_1 == id) {
                    //處理代碼;
                }
            }
        });
           

二.複選按鈕

用法基本與Button相同

CheckBox對象.isChecked()方法可以用來判斷複選按鈕是否選中

事件監聽:

也是實作setOnCheckedChangListener(new OnCheckedChangListener(){匿名方法})

CheckBox.OnCheckedChangeListener boxs = new CheckBox.OnCheckedChangeListener() {
            //複選框的添加事件
            @Override
            public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
            //第一個參數為調用此方法的目前複選框按鈕,參數二為選中狀态
                // TODO Auto-generated method stub
                if (box_1.isChecked() == true) {//可以使用isChecked()方法來擷取并判斷
                    //執行代碼;
                }

                if (arg1) {//直接判斷按鈕狀态的值來處理
                    //執行代碼;
                }
            }
        };
        //給box_1添加事件監聽;
        box_1.setOnCheckedChangeListener(boxs);
           

/*****************************************************************************************/

下面實作一個注冊界面:點選注冊按鈕後顯示所填寫内容:

Android--(11)--解讀單選(RadioButton)和複選(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:gravity="center_horizontal"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.logindemo_9015.MainActivity" >

    <GridLayout
        android:id="@+id/grid"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:columnCount="2"
        android:rowCount="6" >

        <TextView
            android:id="@+id/lable_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:text="使用者名:"
            android:textSize="18sp" />

        <EditText
            android:id="@+id/text_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="fill"
            android:hint="請填寫登入賬号" />

        <TextView
            android:id="@+id/lable_2"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="center_vertical"
            android:text="密碼:"
            android:textSize="18sp" />

        <EditText
            android:id="@+id/text_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:password="true"
            android:layout_gravity="fill" />

        <TextView
            android:id="@+id/lable_3"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="center_vertical"
            android:text="年齡:"
            android:textSize="18sp" />

        <EditText
            android:id="@+id/text_3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="fill"
            android:inputType="number" />

        <TextView
            android:id="@+id/lable_7"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="center_vertical"
            android:text="性别:"
            android:textSize="18sp" />

        <RadioGroup
            android:id="@+id/sex"
            android:orientation="horizontal" >

            <RadioButton
                android:id="@+id/men"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="男" />

            <RadioButton
                android:id="@+id/women"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="女" />
        </RadioGroup>

        <TextView
            android:id="@+id/lable_4"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="center_vertical"
            android:text="生日:"
            android:textSize="18sp" />

        <EditText
            android:id="@+id/text_4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="fill" />

        <TextView
            android:id="@+id/lable_5"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="center_vertical"
            android:inputType="number"
            android:text="電話号碼:"
            android:textSize="18sp" />

        <EditText
            android:id="@+id/text_5"
            android:layout_gravity="fill"
            android:hint="請填寫你的電話号碼"
            android:inputType="number" />

        <TextView
            android:id="@+id/lable_6"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="clip_horizontal"
            android:inputType="number"
            android:text="愛好:"
            android:textSize="18sp" />

        <GridLayout
            android:id="@+id/grid"
            android:columnCount="2"
            android:layout_gravity="fill"
            android:rowCount="2" >

            <CheckBox
                android:id="@+id/mesck"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="聽音樂" />

            <CheckBox
                android:id="@+id/booking"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="看小說" />

            <CheckBox
                android:id="@+id/back"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="騎車" />

            <CheckBox
                android:id="@+id/bool"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="打籃球" />
        </GridLayout>

        <Button
            android:id="@+id/submit"
            android:layout_columnSpan="2"
            android:layout_gravity="fill"
            android:text="注冊" />
    </GridLayout>

    <TextView
        android:id="@+id/show"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/grid" />

</RelativeLayout>
           

界面主要采用線性布局實作,将線性布局放在了相對布局中;

java代碼:

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;


public class MainActivity extends Activity {

    //聲明變量資訊:
    Button sumbit;
    EditText text_1,text_2,text_3,text_4,text_5;
    TextView show;
    RadioGroup group;
    CheckBox box_1,box_2,box_3,box_4;
    RadioButton redio_1,redio_2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //擷取對象;
        text_1=(EditText) findViewById(R.id.text_1);
        text_2=(EditText) findViewById(R.id.text_2);
        text_3=(EditText) findViewById(R.id.text_3);
        text_4=(EditText) findViewById(R.id.text_4);
        text_5=(EditText) findViewById(R.id.text_5);
        sumbit=(Button) findViewById(R.id.submit);
        show=(TextView) findViewById(R.id.show);
        group=(RadioGroup) findViewById(R.id.sex);
        box_1=(CheckBox) findViewById(R.id.mesck);
        box_2=(CheckBox) findViewById(R.id.booking);
        box_3=(CheckBox) findViewById(R.id.back);
        box_4=(CheckBox) findViewById(R.id.bool);
        redio_1=(RadioButton) findViewById(R.id.men);
        redio_2=(RadioButton) findViewById(R.id.women);
        //為送出按鈕添加事件
        sumbit.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                String b="",r = "";
                if(redio_1.isChecked()==true){//判斷第一個單選按鈕是否為選中狀态;
                    r=redio_1.getText().toString();
                }
                if(redio_2.isChecked()==true){
                    r=redio_2.getText().toString();
                }
                if(box_1.isChecked()){//判斷是否選擇box_1複選按鈕
                    b+=box_1.getText().toString();
                }
                if(box_2.isChecked()){
                    b+=box_2.getText().toString();
                }
                if(box_3.isChecked()){
                    b+=box_3.getText().toString();
                }
                if(box_4.isChecked()){
                    b+=box_4.getText().toString();
                }
                //group.getCheckedRadioButtonId();
                show.setText("使用者名:"+text_1.getText().toString()+"\n年齡:"+text_3.getText().toString()+"\n性别:"+    r
+"\n日期:"+text_4.getText().toString()+"\n手機号:"+text_5.getText().toString()+"愛好:"+b);
            }
        });

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}
           

繼續閱讀