天天看点

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);
    }
}
           

继续阅读