4.5 RadioButton(单选按钮)
- RadioButton (单选按钮) 基本用法与事件处理:
如题单选按钮,就是只能够选中一个,所以我们需要把RadioButton放到RadioGroup按钮组中,从而实现单选功能。先熟悉下如何使用RadioButton,一个简单的性别选择的例子:另外我们可以为外层RadioGroup设置orientation属性然后设置RadioButton的排列方式,是竖直还是水平。
- 获得选中的值:这里有两种方法
第一种是为RadioButton 设置一个事件监听器setOnCheckChangeListener
在java的application包中新建一个RadioButtonActivity.java。
package com.example.myapplication;
import android.os.Bundle;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class RadioButtonActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.radio_button);
Button btnchage = (Button) findViewById(R.id.btnpost);
final RadioGroup radgroup = (RadioGroup) findViewById(R.id.group1);
//第一种是为RadioButton 设置一个事件监听器setOnCheckChangeListener
radgroup.setOnCheckedChangeListener(((group, checkedId) -> {
RadioButton radioButton = (RadioButton) findViewById(checkedId);
Toast.makeText(getApplicationContext(),"你选了:"+radioButton.getText(),Toast.LENGTH_LONG).show();
}));
}
}
PS:另外有一点要切记,要为每个 RadioButton 添加一个id,不然单选功能不会生效!!!
第二种方法是通过单击其他按钮获取选中单选按钮的值,当然我们也可以直接获取,这个看需求。
package com.example.myapplication;
import android.os.Bundle;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class RadioButtonActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.radio_button);
Button btnchage = (Button) findViewById(R.id.btnpost);
final RadioGroup radgroup = (RadioGroup) findViewById(R.id.group1);
//第一种是为RadioButton 设置一个事件监听器setOnCheckChangeListener
radgroup.setOnCheckedChangeListener(((group, checkedId) -> {
RadioButton radioButton = (RadioButton) findViewById(checkedId);
Toast.makeText(getApplicationContext(),"你选了:"+radioButton.getText(),Toast.LENGTH_LONG).show();
}));
//第二种方法是通过单击其他按钮获取选中单选按钮的值,当然我们也可以直接获取,这个看需求。
btnchage.setOnClickListener((v -> {
for (int i = 0; i < radgroup.getChildCount(); i++) {
RadioButton rb = (RadioButton) radgroup.getChildAt(i);
if (rb.isChecked()){
Toast.makeText(getApplicationContext(),"你选择的是:"+rb.getText(),Toast.LENGTH_LONG).show();
break;
}
}
}));
}
}
代码解析: 这里我们为提交按钮设置了一个setOnClickListener 事件监听器,每次点击的话遍历一次RadioGroup判断哪个按钮被选中我们可以通过下述方法获得RadioButton的相关信息。
- getChildCount( )获得按钮组中的单选按钮的数目;
- getChinldAt(i):根据索引值获取我们的单选按钮;
- isChecked( ):判断按钮是否选中。
测试:将main包下的AndroidMainifest.xml文件中的
android:name=".RadioButtonActivity"
启动测试。
当切换选择内容时:
当提交时: