1. 程式人生 > >Android 單選佇列 RadioGroup與RadioButton詳解

Android 單選佇列 RadioGroup與RadioButton詳解

RadioButton(單選按鈕)在Android開發中應用的非常廣泛,比如一些選擇項的時候,會用到單選按鈕。它是一種單選框雙狀態的按鈕,可以選擇或不選擇。在RadioButton沒有被選中時,使用者能夠按下或點選來選中它。

RadioGroup和RadioButton的關係:

1、RadioButton表示單個圓形單選框,而RadioGroup是可以容納多個RadioButton的容器

2、每個RadioGroup中的RadioButton同時只能有一個被選中

3、不同的RadioGroup中的RadioButton互不相干,即如果組A中有一個選中了,組B中依然可以有一個被選中

4、大部分場合下,一個RadioGroup中至少有2個RadioButton

5、大部分場合下,一個RadioGroup中的RadioButton預設會有一個被選中,並建議您將它放在RadioGroup中的起

始位置

注: RadioGroup繼承至LinearLayout,所以LinearLayout的屬性RadioGroup都可以使用。

RadioButton特殊屬性:

  • android:drawable 設定圖片可以選著圖片位置
  • android:checked 控制元件是否選中
  • android:button 隱藏圓圈

注:button基本屬性就不做細講

XML 程式碼:

  <RadioGroup
        android:id="@+id/main_radiogroup"
        android:layout_width="match_parent"
        android:layout_height="@dimen/activity_main_radiogroup_height"
        android:background="@color/colorWhite"
        android:orientation="horizontal">
        <RadioButton
            android:id="@+
id/main_radiobutton_weixing"
android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:textColor="@color/activity_main_radiobutton_text_color" android:textSize="@dimen/activity_main_radiobutton_text_size" android:text="@string/main_radiobutton_weixing" android:drawableTop="@drawable/radiobutton_main_weixing" android:gravity="center" android:checked="true" android:button="@null" android:background="@null"/> <RadioButton android:id="@+id/main_radiobutton_contacts" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:textColor="@color/activity_main_radiobutton_text_color" android:textSize="@dimen/activity_main_radiobutton_text_size" android:text="@string/main_radiobutton_contects" android:drawableTop="@drawable/radiobutton_main_contacts" android:gravity="center" android:button="@null" android:background="@null"/> <RadioButton android:id="@+id/main_radiobutton_find" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:textColor="@color/activity_main_radiobutton_text_color" android:textSize="@dimen/activity_main_radiobutton_text_size" android:text="@string/main_radiobutton_find" android:drawableTop="@drawable/radiobutton_main_find" android:gravity="center" android:button="@null" android:background="@null"/> <RadioButton android:id="@+id/main_radiobutton_my" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:textColor="@color/activity_main_radiobutton_text_color" android:textSize="@dimen/activity_main_radiobutton_text_size" android:text="@string/main_radiobutton_my" android:drawableTop="@drawable/radiobutton_main_my" android:gravity="center" android:button="@null" android:background="@null"/> </RadioGroup>

Activity監聽程式碼:

 private void monitoringRadioGrop(){
        mRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId){
                    case R.id.main_radiobutton_weixing:
                        showToast(R.string.main_radiobutton_weixing);
                        break;
                    case R.id.main_radiobutton_contacts:
                        showToast(R.string.main_radiobutton_contects);
                        break;
                    case R.id.main_radiobutton_find:
                        showToast(R.string.main_radiobutton_find);
                        break;
                    case R.id.main_radiobutton_my:
                        showToast(R.string.main_radiobutton_my);
                        break;
                    default:
                        Log.d(TAG,"怎麼監聽的????");
                        break;
                }
            }
        });
    }

圖片:radiobutton_main_weixing 實現,在res/drawable新建XML:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- 未選中-->
    <item android:drawable="@drawable/radiobutton_main_weixing_no" android:state_checked="false" />
    <!--選中-->
    <item android:drawable="@drawable/radiobutton_main_weixing_yes" android:state_checked="true" />
</selector>

文字顏色修改:activity_main_radiobutton_text_color,在res下新建color資料夾在新建XML:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true"
    android:color="@color/button_app_main_yes_text"/>
    <!-- not selected -->
    <item android:state_checked="false"
        android:color="@color/button_app_main_no_text"/>
</selector>

效果圖:

這裡寫圖片描述

希望對你們有幫助,O(∩_∩)O謝謝!!!