当前位置: 代码迷 >> Android >> android根本控件学习-RadioButton&CheckBox
  详细解决方案

android根本控件学习-RadioButton&CheckBox

热度:518   发布时间:2016-04-24 11:55:08.0
android基本控件学习-----RadioButton&CheckBox

RadioButton(单选框)和CheckBox(复选框)讲解:

一、基本用法和事件处理

(1)RadioButton单选框,就是只能选择其中的一个,我们在使用的时候需要将RadioButton放到RadioGroup中使用,同时我们还可以在RadioGroup中设置  orientation属性来控制单选框的方向。

<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:background="#ffffff">   <TextView       android:id="@+id/text1"       android:layout_width="match_parent"       android:layout_height="wrap_content"       android:text="请选择你的性别"       android:textStyle="bold"       android:textSize="30sp"/>    <RadioGroup        android:id="@+id/rg1"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">        <RadioButton            android:id="@+id/rb1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="男"/>        <RadioButton            android:id="@+id/rb2"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="女"/>    </RadioGroup>    <Button        android:id="@+id/btn1"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="提交"/></LinearLayout>

(2)我们如何获取单选按钮选中的值呢,这里有两种方法

a:为RadioGroup(radioButton)设置setonCheckChangeListener

package com.example.test3;import android.app.Activity;import android.os.Bundle;import android.widget.RadioButton;import android.widget.RadioGroup;import android.widget.Toast;public class MainActivity extends Activity {    private RadioGroup radioGroup;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        radioGroup = (RadioGroup) findViewById(R.id.rg1);        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {            @Override            public void onCheckedChanged(RadioGroup radioGroup, int checkId) {                RadioButton radioButton = (RadioButton) findViewById(checkId);                Toast.makeText(MainActivity.this,"你选中了" + radioButton.getText().toString(),Toast.LENGTH_LONG).show();            }        });    }}

b:为RadioGroup设置setOnClickListener,但是在使用这个方法的时候需要对RadioGroup内的每一个id

package com.example.test3;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.RadioButton;import android.widget.RadioGroup;import android.widget.Toast;public class MainActivity extends Activity {    private RadioGroup radioGroup;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        radioGroup = (RadioGroup) findViewById(R.id.rg1);        Button btn = (Button) findViewById(R.id.btn1);        btn.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                for (int i = 0; i < radioGroup.getChildCount(); i++) {                    RadioButton radioButton = (RadioButton) radioGroup.getChildAt(i);                    if (radioButton.isChecked()) {                        Toast.makeText(MainActivity.this, "你选择了" + radioButton.getText(), Toast.LENGTH_LONG).show();                        break;                    }                }            }        });    }}

(3)CheckedButto和RadioButton差不多就不多说,直接看代码吧

<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:background="#ffffff">   <TextView       android:id="@+id/text1"       android:layout_width="match_parent"       android:layout_height="wrap_content"       android:text="请选择你的喜欢的水果(可以多选)"       android:textStyle="bold"       android:textSize="22sp"/>   <CheckBox       android:id="@+id/cb1"       android:layout_width="wrap_content"       android:layout_height="wrap_content"       android:text="苹果"/>    <CheckBox        android:id="@+id/cb2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="香蕉"/>    <CheckBox        android:id="@+id/cb3"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="梨子"/>    <Button        android:id="@+id/btn1"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="提交"/></LinearLayout>
package com.example.test3;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.Toast;public class MainActivity extends Activity implements CompoundButton.OnCheckedChangeListener,View.OnClickListener{    private CheckBox checkBox1;    private CheckBox checkBox2;    private CheckBox checkBox3;    private Button btn1;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        checkBox1 = (CheckBox) findViewById(R.id.cb1);        checkBox2 = (CheckBox) findViewById(R.id.cb2);        checkBox3 = (CheckBox) findViewById(R.id.cb3);        btn1 = (Button) findViewById(R.id.btn1);        checkBox1.setOnCheckedChangeListener(this);        checkBox2.setOnCheckedChangeListener(this);        checkBox3.setOnCheckedChangeListener(this);        btn1.setOnClickListener(this);    }    @Override    public void onCheckedChanged(CompoundButton compoundButton, boolean b) {        if (compoundButton.isChecked()){            Toast.makeText(MainActivity.this,"你选中了" + compoundButton.getText(),Toast.LENGTH_LONG).show();        }    }    @Override    public void onClick(View view) {        String choose = "";        if(checkBox1.isChecked()){           choose += checkBox1.getText().toString();        }        if(checkBox2.isChecked()){            choose += checkBox2.getText().toString();        }        if(checkBox3.isChecked()){           choose += checkBox3.getText().toString();        }        Toast.makeText(MainActivity.this,"你选中了" + choose,Toast.LENGTH_LONG).show();    }}

二、自定义点击的效果或者说是点击框的自定义(以checkBox为例)

一共有两种方法,但是两种方法的本质还是一样的,效果图在两种方法之后一并附上

(1)第一种:方法简单和前面讲的Button一样的

定义StateListDrawable文件

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:state_checked="true"          android:state_enabled="true"          android:drawable="@mipmap/btn_radio_on"/>    <item android:state_checked="false"          android:state_enabled="true"          android:drawable="@mipmap/btn_radio_off"/></selector>

在布局文件使用button属性即可

(2)自定义style

第一步:还是先定义StateListDrawable文件,上面已经有了

第二步:在style文件定义自定义的样式

第三步:在布局文件中使用style

效果图:

 

  相关解决方案