单选按钮(RadioButton)——Mars Android开发视频教程之第一季第十集(重)

##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)方法。

  • group表明状态改变的选项所在组。
  • checkedId表明状态改变的选项ID。

如今咱们能够写一些打印语句。 例如,打印状态改变按钮的内容。那么咱们要在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)方法

  • button是被监听的RadioButton对象;
  • isChecked为是否选中。

写个打印语句来测试一下,显示被监听按钮的状态:

public void onCheckedChanged(CompoundButton button, boolean isChecked) {
			if(isChecked){
				System.out.println(button.getText() + "被选中了");
			} else {
				System.out.println(button.getText() + "没有被选中");
			}
		}

##4· 疑问 我就在想,单独监听一个单选按钮有什么用呢? 无非就是,知道这个按钮是处于选中仍是未选中状态而已嘛。 而这经过组监听也彻底能实现啊,当选中的项不是目标项时,就表明它未选中,反之亦然。

##5· 总结

  • 单选按钮由组(RadioGroup)和项(RadioButton)所构成;
  • 使用的时候,先添加组标签,而后再往里面添加子标签;
  • 一组单选按钮中只能存在一个选中项;
  • 监听组(RadioGroup)使用监听器RadioGroup.OnCheckedChangeListener;
  • 监听单独一个项使用CompoundButton.OnCheckedChangeListener

##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()这个方法的做用吧。

完毕

相关文章
相关标签/搜索