RadioButton是單選按鈕,允許用戶在一個組中選擇一個選項。同一組中的單選按鈕有互斥效果。
這個控件可以由非選中狀態通過點擊事件轉為選中狀態,但是不能通過點擊實現逆向的狀態轉換,一個默認樣式RadioButton控件的非選中和選中狀態如下:
其組成和CheckBox一樣,我們同樣可以分別對其中的字體和Button進行設置,實現達到和CheckBox一樣的效果。
RadioButton的特點
1.RadioButton是圓形單選框;
2.RadioGroup是個可以容納多個RadioButton的容器;
3.在RadioGroup中的RadioButton控件可以有多個,但同時有且僅有一個可以被選中。
Demo:
- 在布局文件中定義RadioGroup
- 在RadioGroup中添加RadioButton(至少兩個)
- 在Java代碼中獲取控件對象
- 為對象添加監聽器,實現OnCheckedChangeListener接口,(選擇RadioGroup包下的那個);
- 重寫onCheckedChanged方法。
xml文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="請選擇性別" /> <RadioGroup android:id="@+id/rg_sex" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <RadioButton android:id="@+id/rb_Male" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="男" /> <RadioButton android:id="@+id/rb_FeMale" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="女" /> </RadioGroup> </LinearLayout>
java文件:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
public class MainActivity extends AppCompatActivity{
private RadioGroup rg;
private RadioButton rb_Male, rb_Female;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_radiobutton);
rg = (RadioGroup) findViewById(R.id.rg_sex);
rb_Male = (RadioButton) findViewById(R.id.rb_Male);
rb_Female = (RadioButton) findViewById(R.id.rb_FeMale);
//注意是給RadioGroup綁定監視器
rg.setOnCheckedChangeListener(new MyRadioButtonListener() );
}
class MyRadioButtonListener implements OnCheckedChangeListener {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// 選中狀態改變時被觸發
switch (checkedId) {
case R.id.rb_FeMale:
// 當用戶選擇女性時
Log.i("sex", "當前用戶選擇"+rb_Female.getText().toString());
break;
case R.id.rb_Male:
// 當用戶選擇男性時
Log.i("sex", "當前用戶選擇"+rb_Male.getText().toString());
break;
}
}
}
}
運行效果