Android開發之RadioGroup與RadioButton控制元件使用
RadioButton即單選按鈕,它在開發中提供了一種“多選一”的操作模式,是Android開發中常用的一種元件,例如在使用者註冊時,選擇性別時只能從“男”或者“女”中選擇一個。與Web開發不同的是,在Android中可以使用RadioGroup來定義單選按鈕元件。
RadioGroup類的定義如下圖所示:
java.lang.Object
android.view.View
android.view.ViewGroup
android.widget.LinearLayout
android.widget.RadioGroup
RadioGroup提供的只是RadioButton單選按鈕的容器,我們可以在該容器中新增多個RadioButton方可使用,要設定單選按鈕的內容,則需要使用RadioButton類。
RadioButton類的定義如下圖所示:
java.lang.Object
android.view.View
android.widget.TextView
android.widget.Button
android.widget.CompoundButton
android.widget.RadioButton
可以發現RadioButton類是Button類的子類,因此該元件與Button按鈕元件的使用類似,區別在於定義的RadioButton元件必須放在RadioGroup元件中。
-----------------------------------------------------------------------------------------------------
RadioGroup的公共方法
public void addView (View child, int index, ViewGroup.LayoutParams params)
使用指定的佈局引數新增一個子檢視
引數
child 所要新增的子檢視
index 將要新增子檢視的位置
params 所要新增的子檢視的佈局引數
public void check (int id)
如果傳遞-1作為指定的選擇識別符號來清除單選按鈕組的勾選狀態,相當於呼叫clearCheck()操作
引數
id 該組中所要勾選的單選按鈕的唯一識別符號(id)
參見
getCheckedRadioButtonId()
clearCheck()
public void clearCheck ()
清除當前的選擇狀態,當選擇狀態被清除,則單選按鈕組裡面的所有單選按鈕將取消勾選狀態,getCheckedRadioButtonId()將返回null
參見
check(int)
getCheckedRadioButtonId()
public RadioGroup.LayoutParams generateLayoutParams (AttributeSet attrs)
基於提供的屬性集合返回一個新的佈局引數集合
引數
attrs 用於生成佈局引數的屬性
返回值
返回一個ViewGroup.LayoutParams或其子類的例項
public int getCheckedRadioButtonId ()
返回該單選按鈕組中所選擇的單選按鈕的標識ID,如果沒有勾選則返回-1
返回值
返回該單選按鈕組中所選擇的單選按鈕的標識ID
參見
check(int)
clearCheck()
public void setOnCheckedChangeListener (RadioGroup.OnCheckedChangeListener listener)
註冊一個當該單選按鈕組中的單選按鈕勾選狀態發生改變時所要呼叫的回撥函式
引數
listener 當單選按鈕勾選狀態發生改變時所要呼叫的回撥函式
public void setOnHierarchyChangeListener (ViewGroup.OnHierarchyChangeListener listener)
註冊一個當子內容新增到該檢視或者從該檢視中移除時所要呼叫的回撥函式
引數
listener 當層次結構發生改變時所要呼叫的回撥函式
受保護方法
protected LinearLayout.LayoutParams generateDefaultLayoutParams ()
當佈局為垂直方向時,將返回一個寬度為“填充父元素”(MATCH_PARENT),高度為“包裹內容”的佈局引數集合,如果為水平方向時,將返回寬度為“包裹內容”,高度為“填充父元素”的佈局引數集合
(match_parent即為fill_parent,public static final int FILL_PARENT/MATCH_PARENT = -1 )
返回值
返回一個預設的佈局引數集合
protected void onFinishInflate ()
當檢視從XML中載入,且相應的子檢視被新增之後,呼叫該方法,
即使子類重寫了該方法,應該確保去呼叫父類的方法(通常放在方法在第一句),這樣才能完成相應的呼叫引數
返回值
返回一個預設的佈局引數集合
------------------------------------------------------------------------------------------------------
Layout佈局檔案程式碼如下:
<RadioGroup
android:id="@+id/rgSex"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:checkedButton="@+id/male"
android:orientation="horizontal">
<RadioButton
android:id="@+id/male"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男"/>
<RadioButton
android:id="@+id/female"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女"/>
</RadioGroup>
在RadioGroup中使用
android:orientation="horizontal"
來設定內部RadioButton的排列方式,horizontal為水平,vertical為垂直。
android:checkedButton="@+id/male"
設定RadioGroup內預設選中的RadioButton。 執行效果如下:
單選按鈕RadioGroup上我們可以進行事件處理操作,當使用者選中某個選項之後將觸發相應的監聽器進行處理,該註冊事件監聽為OnCheckedChangeListener,具體方法為:
public void setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener listener)
事件程式碼如下:
/**RadioGroup與RadioButton**/
sexRadioGroup = (RadioGroup)findViewById(R.id.rgSex);
male = (RadioButton)findViewById(R.id.male);
female = (RadioButton)findViewById(R.id.female);
sexRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
String msg = "";
if(male.getId()==checkedId){
msg = "當前選中的性別為:"+male.getText().toString();
}
if(female.getId()==checkedId){
msg = "當前選中的性別為:"+female.getText().toString();
}
Toast.makeText(getApplicationContext(),msg,Toast.LENGTH_LONG).show();
}
});
效果如下圖所示:
===========================================================================
如果覺得對您有幫助,微信掃一掃支援一下:
相關文章
- Android View系列---RadioGroup與RadioButtonAndroidView
- Android開發之Spinner控制元件使用Android控制元件
- 直播系統搭建,Android使用RadioGroup+RadioButton實現導航欄Android
- Android 如何獲取RadioGroup選中RadioButton的內容Android
- Android使用者介面之常用控制元件RadioGroup、CheckBox 2018/8/10Android控制元件
- Android UI控制元件系列:RadioButton(單選按鈕)AndroidUI控制元件
- Android開發之FastJson概述與簡單使用AndroidASTJSON
- Android開發之Fragment動態使用AndroidFragment
- Android開發之ViewPager簡單使用AndroidViewpager
- Android開發01——控制元件的使用,四則運算Android控制元件
- Android開發之自定義隨機驗證碼控制元件Android隨機控制元件
- Android開發之Loader與LoaderManagerAndroid
- Android 從0開始自定義控制元件之 ViewRoot 與 DecorView (五)Android控制元件View
- Android開發Style的使用,控制元件共同屬性的抽取Android控制元件
- Android混合開發之WebView使用總結AndroidWebView
- Android開發之 .9PNG 的使用Android
- Android開發之ListView使用經驗分享AndroidView
- Android 介面(1):UI 開發控制元件AndroidUI控制元件
- Android混合開發之WebView與Javascript互動AndroidWebViewJavaScript
- android RadioButton的問題Android
- tkinter中Radiobutton單選框控制元件(七)控制元件
- ASP.NET動態網站開發培訓-06.CheckBox、RadioButton和Image控制元件ASP.NET網站控制元件
- Android API開發之OpenGL開發之Android OpenGL STL詳解AndroidAPI
- Android JNI開發系列之Java與C相互呼叫AndroidJava
- Android開發之HandlerAndroid
- Android開發之TabLayoutAndroidTabLayout
- Android開發之ScrollerAndroid
- Android開發之ExpandableListViewAndroidView
- Kivy App開發之UX控制元件ImageAPPUX控制元件
- 可無限巢狀選擇的RadioGroup,以及可任意定義佈局的RadioButton巢狀
- WPF RadioButton控制元件 一定要選一個控制元件
- 安卓開發之Fragment的使用與通訊安卓Fragment
- android開發 之 Bolts-AndroidAndroid
- Android Native 開發之 NewString 與 NewStringUtf 解析Android
- Kivy App開發之UX控制元件LabelAPPUX控制元件
- Android開發之View動畫AndroidView動畫
- Android開發之幀動畫Android動畫
- Android MD控制元件之CardViewAndroid控制元件View