Android单选和多选按钮的使⽤
单项选择RadioButton和多项选择CheckBox的使⽤
前⾔:
在上⼀章我写了关于安卓UI控件之Button,这⼀章就来讲解下它的⼦类RadioButton和CheckBox。
在Android中,可以通过RadioButton和RadioGroup的组合来实现单项选择的效果。⽽多项选择则是通过CheckBox来实现的。
1、单选选择RadioButton
我们知道,⼀个单项选择是由两部分组成的,分别是前⾯的选择按钮和后⾯的“答案”。
选择按钮可以通过RadioButton来实现,⽽“答案”则可以通过RadioGroup来实现。
  具体的实现步骤如下:
  ⾸先,在布局⽂件中定义⼀个TextView控件,⽤来显⽰问题。
  然后,再在布局⽂件中定义⼀个RadioGroup控件,⽤来显⽰答案。
  最后,再在RadioGroup控件中定义四个(根据需求⽽定)RadioButton控件,并将“答案”分别赋给每个选项。
如下是单项选择的XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="schemas.android/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!--题⽬-->
<TextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Android内核是基于什么系统?"
android:textSize="24sp"
/>
<RadioGroup
android:id="@+id/radiogroup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<RadioButton
android:id="@+id/radiobutton1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Windows"
/>
<RadioButton
android:id="@+id/radiobutton2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Mac os"
/>
<RadioButton
android:id="@+id/radiobutton3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Linux"
/>
<RadioButton
android:id="@+id/radiobutton4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="嵌⼊式系统"
/
>
</RadioGroup>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button1"
android:layout_marginTop="50dp"
android:text="进⼊下⼀项测试"
/>
</LinearLayout>
因为是单项选择,所以各个选项之间存在互斥性,即仅能选中其中的某⼀个选项。
那么如何来确定⽤户的选择是否正确,并给出相应的提⽰信息呢?
  要确定⽤户的选择是否正确,需要知道⽤户选择的是选项中的哪⼀项,
这可以通过为RadioGroup设置事件setOnCheckedChangeListener来实现。
通过该事件便可以判断出⽤户点击的是哪⼀个RadioButton了。然后,再使⽤Toast来显⽰相应的提⽰信息即可。⽤上述⽅案实现单项选择demo的java源代码如下:
package com.dsl.ui_application_07;
import android.app.Activity;
t.Intent;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
htmlradio的text出不来import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;
/**
* 功能:安卓控件之单项选择按钮
*
* 作者:单胜凌
* 时间:2016.12.14
*/
public class MainActivity extends Activity {
TextView mTV;          //⽤于显⽰问题
RadioGroup mRG;        //⽤于显⽰答案
RadioButton mRB1;      //⽤于显⽰选项
RadioButton mRB2;
RadioButton mRB3;
RadioButton mRB4;
Button mBT;            //跳转按钮
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main); //加载布局⽂件
/
/加载控件绑定
mTV = (TextView)findViewById(view);
mRG = (RadioGroup)findViewById(R.id.radiogroup);
mRB1= (RadioButton)findViewById(R.id.radiobutton1);
mRB2= (RadioButton)findViewById(R.id.radiobutton2);
mRB3= (RadioButton)findViewById(R.id.radiobutton3);
mRB4= (RadioButton)findViewById(R.id.radiobutton4);
mBT = (Button)findViewById(R.id.button1);
//设置
mRG.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (checkedId == Id()) {
MyToast("正确答案:"+Text()+",恭喜你,回答正确");
} else {
MyToast("回答错误!");
}
}
});
mBT.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//跳转到下⼀项测试页
Intent intent=new Intent();
intent.setClass(MainActivity.this, Activity_tow.class);
startActivity(intent);
finish();
}
}
});
}
private void MyToast(String str)
{
Toast mtoast = Toast.makeText(MainActivity.this,str,Toast.LENGTH_SHORT);
mtoast.setGravity(Gravity.TOP,0,400);
mtoast.show();
}
}
上叙代码运⾏效果如下:
2、多项选择按钮
多项选择与单项选择最重要的区别就是多项选择可以让⽤户选择⼀个以上的选项。
  在Android中,多项选择是通过CheckBox来实现的,为了确定⽤户是否选择了某⼀项,则需要对每⼀个选项进⾏事件监听。  多项选择的实现⽅法和单项选择的实现⽅法⼤致相同。
  ⾸先,在布局⽂件中定义⼀个TextView控件,⽤来显⽰问题。
  然后,再在布局⽂件中定义四个(根据需求⽽定)CheckBox控件,分别⽤来显⽰每⼀个选项。
  最后,在布局⽂件中定义⼀个Button控件,⽤于提交⽤户所选的选项(这个可以没有)。
  如下是多项选择demo的xml布局⽂件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="schemas.android/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!--题⽬-->
<TextView
android:id="@+id/textview2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="请问你为什么喜欢Android呢?"
android:textSize="20sp"
/>
<CheckBox
android:id="@+id/checkbox1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="开源"
/>
<CheckBox
android:id="@+id/checkbox2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="⽆界限的应⽤程序"
/>
<CheckBox
android:id="@+id/checkbox3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="应⽤⼴泛"
/>
<CheckBox
android:id="@+id/checkbox4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="我就是喜欢Android任性!"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button2"
android:text="提交问卷"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button3"
android:layout_marginTop="50dp"
android:text="进⼊下⼀项测试"
/>
</LinearLayout>
当然了,我们还需要在java代码中实现对⽤户的操作进⾏事件监听,并做出相应的响应。
为此,我们需要为每⼀个CheckBox多项选择选项都设置⼀个事件setOnCheckedChangeListener,并通过mCheckBox.isChecked()⽅法来判断该选项是否被选中(true表⽰被选中,false表⽰未选中)。
此外,我们还可以通过⼀个全局变量checkedcount来统计当前有⼏个选项被选中,实现⽅法也很简单,

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。