Android Studio 單選方框 RadioButton 教學

在上一篇我們教大家使用CheckBox複選方框

這次我們就來教單選方框 RadioButton

程式碼

在做RadioButton單選框前
有一個要注意的地方
在做RadioButton外層一定要加一個RadioGroup的原件
不然就會變成複選摟~
直接來看程式碼呈現方式
馬上就能理解了

第一個方法

在activity_main.xml給定當前的Layout id

在到在MainActivity.java內宣告
取得Layout
先透過new的方式建立一個"RadioGroup"的元件
在new兩個"RadioButton"的元件
然後把兩個"RadioButton"加入至"RadioGroup"元件裡
再把"RadioGroup"加入至Layout



MainActivity.java
RadioButton radioButton1 = new RadioButton(MainActivity.this);
radioButton1.setText("男生");
RadioButton radioButton2 = new RadioButton(MainActivity.this);
radioButton2.setText("女生");
RadioGroup radioGroup = new RadioGroup(MainActivity.this);
radioGroup.addView(radioButton1);
radioGroup.addView(radioButton2);
LinearLayout linearlayout = (LinearLayout) findViewById(R.id.linearlayout);
linearlayout.addView(radioGroup);

執行畫面


第二個方法



在activity_main.xml裡建立

執行起來基本上是一樣的

但一般都會使用第二個方法來呈現
當然一樣要用"RadioGroup"元件包覆



activity_main.xml
<RadioGroup
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <RadioButton
        android:text="男生"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <RadioButton
        android:text="女生"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</RadioGroup>

執行畫面



單選方框事件

事件撰寫方法分為兩種

第一種

在activity_main.xml上設定事件
按下Alt+Enter 自動生成
非常簡單

加入onClick 
android:onClick="RadioClick"

activity_main.xml
<RadioGroup
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <RadioButton
        android:id="@+id/boys"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="RadioClick"
        android:text="男生" />
    <RadioButton
        android:id="@+id/girls"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="RadioClick"
        android:text="女生" />
</RadioGroup>

游標點到android:onClick="RadioClick"的位置按下Alt+Enter
會跳出如下圖


選擇Create'RadioClick(View)'in'MainActivity'

他就會自動創建RadioClick至MainActivity
如下圖
MainActivity.java



第二種

第二種是比較常見的做法
並且加入判斷式switch來區分選取項
如果選擇"男生"時跳出"我是男生" ,則選擇"女生"時跳出"我是女生"

先在 activity_main.xml 的RadioButton給它們一個 id(代號)


這裡我們把男生選項id為boys 女生選項id為girls(可自行定義)

activity_main.xml
<RadioGroup
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <RadioButton
        android:id="@+id/boys"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="RadioClick"
        android:text="男生" />
    <RadioButton
        android:id="@+id/girls"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="RadioClick"
        android:text="女生" />
</RadioGroup>

接著到MainActivity.java來設定事件


MainActivity.java
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        RadioButton boys = (RadioButton) findViewById(R.id.boys);
        RadioButton girls = (RadioButton) findViewById(R.id.girls);
        boys.setOnCheckedChangeListener(mOnCheckedChangeListener);
        girls.setOnCheckedChangeListener(mOnCheckedChangeListener);
    }
    private CompoundButton.OnCheckedChangeListener mOnCheckedChangeListener = new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            switch (buttonView.getId()) {
                case R.id.boys:
                    Toast.makeText(MainActivity.this, "我是男生!", Toast.LENGTH_SHORT).show();
                    break;
                case R.id.girls:
                    Toast.makeText(MainActivity.this, "我是女生!", Toast.LENGTH_SHORT).show();
                    break;
            }
        }
    };
}

執行畫面


以上就是簡單的介紹了RadioButton基本操作了。

留言

這個網誌中的熱門文章

Android Studio 清單 ListView 教學

Android Studio 時間文字框 TextClock 教學

Android Studio 按鈕 Button 教學(內有影片)