1. 程式人生 > >單選按鈕RadioButton使用

單選按鈕RadioButton使用

1、單選按鈕使用

在預設情況先,單選按鈕顯示為一個圓形圖示,並且在該圖示旁邊放置一些說明性文字。在程式中,一般將多個單選按鈕放置在按鈕組裡面,使用這些按鈕表現出來某些功能,當用戶選中某個單選按鈕後,按鈕組中的其他按鈕將被自動取消選中狀態。在Android中,單選按鈕使用RadioButton表示,而RadioButton有是Button的子類,所有單選按鈕可以直接使用Button支援的各種屬性。

在Android中,可以使用兩種方法向螢幕中新增單選按鈕:一種是通過XML佈局檔案中使用<RadioButton>標記新增;另一種是在Java中,通過new關鍵字建立。在XML中通過<RadioButton>新增單選按鈕如下:

<RadioButton 
      android:id="@+id/ID號"
      android:text="顯示文字"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:checked="true|false"
      >
        
</RadioButton>

RadioButton元件中的android:checked 屬性用於指定選中狀態,屬性值為true,表示選中;屬性值為false時,表示取消選中,預設為false。

通常情況下,RadioButton元件需要與RadioGroup元件一起使用,組成一個單選按鈕組。在XML佈局檔案中,新增RadioGroup元件的基本格式如下:

<RadioGroup 
        android:id="@+id/ID號"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >
        <!-- 新增多個RadioGroup元件 -->
</RadioGroup>	

2、獲取單選按鈕組中選中項的值

獲取單選按鈕組中選中項的值,通常存在以下兩種情況:一種是在改變單選按鈕組的值時獲取,另一種是在單擊其他按鈕時獲取。

1)在改變單選按鈕組的值時獲取

在改變單選按鈕組的值來獲取選中項的值時,首先需要獲取單選按鈕組,然後為其新增OnCheckedChangeListener,並在其onCheckedChange()方法中根據引數checkedIdea獲取被選中的單選按鈕,並通過其getText()方法獲取該單選按鈕對應的值。程式碼實現如下:

RadioGroup sex = (RadioGroup)findViewById(R.id.radoiGroup);
sex.setOnCheckedChangeListener(new OnCheckedChangeListener(){

	@Override
	public void onCheckedChanged(RadioGroup group, int checkedId) {
	// TODO Auto-generated method stub
	RadioButton r = (RadioButton)findViewById(checkedId);
	r.getText();//獲取被選中的單選按鈕的值
	}		
});	

2)單擊其他按鈕時獲取

單擊其他按鈕時獲取選中項的值,首先需要在該按鈕單擊事件監聽器的onClick()方法中,通過for迴圈語句遍歷當前單選按鈕組,並根據被遍歷到的單選按鈕組的isChecked()方法判斷該按鈕是否被選中,當被選中時,通過單選按鈕的getText()方法獲取對應的值。

final RadioGroup sex = (RadioGroup)findViewById(R.id.radoiGroup);
Button submitBtn = (Button)findViewById(R.id.button);
submitBtn.setOnClickListener(new OnClickListener(){

	@Override
	public void onClick(View arg0) {
		// TODO Auto-generated method stub
		for(int i=0; i<sex.getChildCount(); i++){
			RadioButton r = (RadioButton)sex.getChildAt(i);
			if(r.isChecked()){
				r.getText();
				break;
			}
		}
	}
});