##1· 什么是单选按钮(RadioButton)? 这样的按钮就叫单选按钮,这里有两组单选按钮; 一组单选按钮中,只能有一个选项被选中; java
##2· RadioGroup与RadioButton RadioGroup表明组;RadioButton表明单选按钮项;android
##3· 单选按钮的使用布局
<RadioGroup>包围<RadioButton>,一对<RadioGroup/>表明一组单选按钮。测试
首先在布局文件中添加一对组标签:code
<RadioGroup android:id="@+id/radioGroup1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"><!-- 选项的排列方向 --> </RadioGroup>
而后在组标签中添加子标签:对象
<RadioGroup android:id="@+id/radioGroup1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <RadioButton android:id="@+id/radioButton_A" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="A"/> <RadioButton android:id="@+id/radioButton_B" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="B"/> </RadioGroup>
这样就成功声明了一组单选按钮。接口
接着在java代码中获取对应的对象get
先声明成员变量:it
private RadioGroup radioGroup; private RadioButton radioButton_A; private RadioButton radioButton_B;
而后找到它们:io
radioGroup = (RadioGroup) findViewById(R.id.radioGroup1); radioButton_A = (RadioButton) findViewById(R.id.radioButton_A); radioButton_B = (RadioButton) findViewById(R.id.radioButton_B);
###3.1 单选按钮的监听 咱们想知道用户点击的是哪个选项,因此最后就须要对其进行监听。
首先建立监听类 这里要注意,若是对组进行监听,那么就得导入RadioGourp包中的接口OnCheckedChangeListener:
class RadioGroupCheckedChangeListener implements OnCheckedChangeListener{ public void onCheckedChanged(RadioGroup group, int checkedId) { } }
最后生成监听类对象,将监听器挂接在RadioGroup对象上:
RadioGroupCheckedChangeListener raidoListener = new RadioGroupCheckedChangeListener(); radioGroup.setOnCheckedChangeListener(raidoListener);
这样,radioGroup组中的任意选项状态改变时,就会调用onCheckedChanged(RadioGroup group, int checkedId)方法。
如今咱们能够写一些打印语句。 例如,打印状态改变按钮的内容。那么咱们要在onCheckedChanged方法中进行实现:
public void onCheckedChanged(RadioGroup group, int checkedId) { if(checkedId == radioButton_A.getId()){ System.out.println("A"); } else if(checkedId == radioButton_B.getId()) { System.out.println("B"); } }
除了对组进行监听以外,咱们还能够给单独一个项进行监听:
定义一个监听类,注意,这里实现的onCheckedChangeListener接口是CompoundButton包中的接口:
class RadioButtonCheckedChangeListener implements CompoundButton.OnCheckedChangeListener{ public void onCheckedChanged(CompoundButton button, boolean isChecked) { } }
接着,建立监听类对象,而后将监听器挂接在要监听的RadioButton对象上:
RadioButtonCheckedChangeListener radiotButtonListener = new RadioButtonCheckedChangeListener(); radioButton_A.setOnCheckedChangeListener(radiotButtonListener);
这样,当这个对象的状态改变时就会调用onCheckedChanged(CompoundButton button, boolean isChecked)方法
写个打印语句来测试一下,显示被监听按钮的状态:
public void onCheckedChanged(CompoundButton button, boolean isChecked) { if(isChecked){ System.out.println(button.getText() + "被选中了"); } else { System.out.println(button.getText() + "没有被选中"); } }
##4· 疑问 我就在想,单独监听一个单选按钮有什么用呢? 无非就是,知道这个按钮是处于选中仍是未选中状态而已嘛。 而这经过组监听也彻底能实现啊,当选中的项不是目标项时,就表明它未选中,反之亦然。
##5· 总结
##6· 练习 实现: 两组单选按钮 1:A、B 2:C、D 点击A的时候C也被选中;点击B的时候也被D选中。
实现:
public void onCheckedChanged(RadioGroup group, int checkedId) { if(checkedId == radioButton_A.getId()){ radioButton_C.setChecked(true); } else if(checkedId == radioButton_B.getId()) { radioButton_D.setChecked(true); } }
这个练习的用意应该是让咱们知道setChecked()这个方法的做用吧。
完毕