##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()這個方法的做用吧。
完畢