RadioGroup實(shí)現(xiàn)單選框的多行排列
RadioGroup的使用非常簡(jiǎn)單,只是一般情況下,只能是橫向排列或豎向排列.如果讓多橫排列的的就不是那么簡(jiǎn)單的了。
也許有童鞋該說(shuō)了,將RadioButton寫(xiě)到LineLayout中不久行了嗎?經(jīng)過(guò)檢驗(yàn)確實(shí)可以那樣做,剛開(kāi)始我也是這樣做到.不過(guò)運(yùn)行起來(lái)發(fā)現(xiàn)了了一個(gè)bug---單選按鈕不在是單選了.而且選擇事件不會(huì)被監(jiān)聽(tīng)到.這就要求我們?nèi)ハ朕k法了.其實(shí)實(shí)現(xiàn)起來(lái)也不難.只要多用幾個(gè)RadioGroup就可以了(要在代碼中處理一些事件)。
上代碼:
1.xml中的布局:
<RelativeLayout
android:id="@+id/main_tab_container"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingTop="30dp">
<RadioGroup
android:id="@+id/radio1"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_margin="5dp"
android:orientation="horizontal">
<RadioButton
android:id="@+id/rb_1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="@dimen/RB_text_size"
android:text="GBP英鎊" />
<RadioButton
android:id="@+id/rb_2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="@dimen/RB_text_size"
android:text="HKD港元" />
<RadioButton
android:id="@+id/rb_3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="@dimen/RB_text_size"
android:text="USD美元Ԫ" />
</RadioGroup>
<RadioGroup
android:id="@+id/radio2"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_below="@+id/radio1"
android:layout_margin="5dp"
android:orientation="horizontal">
<RadioButton
android:id="@+id/rb_4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="@dimen/RB_text_size"
android:text="CHF瑞士法郎" />
<RadioButton
android:id="@+id/rb_5"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="@dimen/RB_text_size"
android:text="SGD新加坡元" />
<RadioButton
android:id="@+id/rb_6"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="@dimen/RB_text_size"
android:text="SEK瑞典克朗" />
</RadioGroup>
<RadioGroup
android:id="@+id/radio3"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_below="@+id/radio2"
android:layout_margin="5dp"
android:orientation="horizontal">
<RadioButton
android:id="@+id/rb_7"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="@dimen/RB_text_size"
android:text="JPY日元" />
<RadioButton
android:id="@+id/rb_8"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="@dimen/RB_text_size"
android:text="CAD加拿大元Ԫ" />
<RadioButton
android:id="@+id/rb_9"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="@dimen/RB_text_size"
android:text="AUD澳大利亞元" />
</RadioGroup>
<RadioGroup
android:id="@+id/radio4"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_below="@+id/radio3"
android:layout_margin="5dp"
android:orientation="horizontal">
<RadioButton
android:id="@+id/rb_10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/RB_text_size"
android:text="EOR歐元Ԫ" />
</RadioGroup>
</RelativeLayout>
這樣就實(shí)現(xiàn)了多行布局,這只是我布局中的一部分,其中 android:textSize=”@dimen/RB_text_size” 為自己定義的字體大小.
2.activity中的使用以及處理:
public class SelectMoneyActivity extends BaseActivity {
String strBtnSelected = ""; //記錄選擇的是哪個(gè)選項(xiàng)
private RadioGroup rg1, rg2, rg3, rg4;
private RadioButton rb_1, rb_2, rb_3, rb_4, rb_5, rb_6, rb_7, rb_8, rb_9, rb_10;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_select_money);
initView();
}
private void initView() {
rg1 = (RadioGroup) findViewById(R.id.radio1);
rg2 = (RadioGroup) findViewById(R.id.radio2);
rg3 = (RadioGroup) findViewById(R.id.radio3);
rg4 = (RadioGroup) findViewById(R.id.radio4);
rb_1 = (RadioButton) findViewById(R.id.rb_1);
rb_2 = (RadioButton) findViewById(R.id.rb_2);
rb_3 = (RadioButton) findViewById(R.id.rb_3);
rb_4 = (RadioButton) findViewById(R.id.rb_4);
rb_5 = (RadioButton) findViewById(R.id.rb_5);
rb_6 = (RadioButton) findViewById(R.id.rb_6);
rb_7 = (RadioButton) findViewById(R.id.rb_7);
rb_8 = (RadioButton) findViewById(R.id.rb_8);
rb_9 = (RadioButton) findViewById(R.id.rb_9);
rb_10 = (RadioButton) findViewById(R.id.rb_10);
btn_back = (Button) findViewById(R.id.btn_back);
btn_next = (Button) findViewById(R.id.btn_next);
//創(chuàng)建監(jiān)聽(tīng)器,為每個(gè)RadioButton注冊(cè)監(jiān)聽(tīng)
BtnSelected btnSelected1 = new BtnSelected("1");
BtnSelected btnSelected2 = new BtnSelected("2");
BtnSelected btnSelected3 = new BtnSelected("3");
BtnSelected btnSelected4 = new BtnSelected("4");
BtnSelected btnSelected5 = new BtnSelected("5");
BtnSelected btnSelected6 = new BtnSelected("6");
BtnSelected btnSelected7 = new BtnSelected("7");
BtnSelected btnSelected8 = new BtnSelected("8");
BtnSelected btnSelected9 = new BtnSelected("9");
BtnSelected btnSelected10 = new BtnSelected("10");
rb_1.setOnClickListener(btnSelected1);
rb_2.setOnClickListener(btnSelected2);
rb_3.setOnClickListener(btnSelected3);
rb_4.setOnClickListener(btnSelected4);
rb_5.setOnClickListener(btnSelected5);
rb_6.setOnClickListener(btnSelected6);
rb_7.setOnClickListener(btnSelected7);
rb_8.setOnClickListener(btnSelected8);
rb_9.setOnClickListener(btnSelected9);
rb_10.setOnClickListener(btnSelected10);
//點(diǎn)擊事件的監(jiān)聽(tīng)器
public class BtnSelected implements View.OnClickListener {
private String btnId;
public BtnSelected(String str) {
btnId = str;
}
@Override
public void onClick(View v) {
strBtnSelected = btnId; //選擇的某一項(xiàng)
isSelect = true;
//點(diǎn)擊了第一行 ,就把另外行的點(diǎn)擊項(xiàng)清空
if (btnId.equals("1") || btnId.equals("2") || btnId.equals("3")) {
rg2.clearCheck();
rg3.clearCheck();
rg4.clearCheck();
} else if (btnId.equals("4") || btnId.equals("5") || btnId.equals("6")) {
rg1.clearCheck();
rg3.clearCheck();
rg4.clearCheck();
} else if (btnId.equals("7") || btnId.equals("8") || btnId.equals("9")) {
rg1.clearCheck();
rg2.clearCheck();
rg4.clearCheck();
} else {
rg1.clearCheck();
rg2.clearCheck();
rg3.clearCheck();
}
}
}
}
已經(jīng)搞定.還有一種方法就是自定義RadioGroup實(shí)現(xiàn),不過(guò)這種有點(diǎn)復(fù)雜.我還是下班回家了.
補(bǔ)充:
使用RadioGroup.setcheck(RadioButton的id)初始化默認(rèn)選中A按鈕,但是監(jiān)聽(tīng)不會(huì)執(zhí)行的問(wèn)題
解決:因?yàn)橐呀?jīng)給A按鈕在布局中設(shè)置了check=”true”; 將這個(gè)屬性去掉就會(huì)執(zhí)行監(jiān)聽(tīng)了.
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android 編譯出錯(cuò)版本匹配問(wèn)題解決辦法
這篇文章主要介紹了Android 編譯出錯(cuò) app\build\intermediates\res\merged\debug\values-v23\values-v23.xml 的問(wèn)題解決辦法,需要的朋友可以參考下2017-07-07
Android PickerView實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了Android PickerView實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)效果,PickerView實(shí)現(xiàn)全國(guó)地址的選擇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
Android實(shí)現(xiàn)瘋狂連連看游戲之開(kāi)發(fā)游戲界面(二)
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)瘋狂連連看游戲之開(kāi)發(fā)游戲界面,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
Android鬧鐘啟動(dòng)時(shí)間設(shè)置無(wú)效問(wèn)題的解決方法
這篇文章主要為大家詳細(xì)介紹了Android鬧鐘啟動(dòng)時(shí)間設(shè)置無(wú)效問(wèn)題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
Android 屏幕切換監(jiān)聽(tīng)的實(shí)例代碼
我試著在屏幕切換時(shí),使View顯示在不同的位置,在網(wǎng)上搜索了一些資料,自己做了一段時(shí)間,終于完成了功能,今天小編給大家分享android 屏幕切換監(jiān)聽(tīng)的實(shí)例代碼,需要的的朋友參考下吧2017-01-01
Android 藍(lán)牙自動(dòng)匹配PIN碼跳過(guò)用戶交互示例
本篇文章主要介紹了Android 藍(lán)牙自動(dòng)匹配PIN碼跳過(guò)用戶交互示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06
Android實(shí)現(xiàn)單行標(biāo)簽流式布局
這篇文章主要為大家詳細(xì)介紹了Android單行標(biāo)簽流式布局,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09
Kotlin標(biāo)準(zhǔn)函數(shù)與靜態(tài)方法基礎(chǔ)知識(shí)詳解
Kotlin中的標(biāo)準(zhǔn)函數(shù)指的是Standard.kt文件中定義的函數(shù),任何Kotlin代碼都可以自由地調(diào)用所有的標(biāo)準(zhǔn)函數(shù)。例如let這個(gè)標(biāo)準(zhǔn)函數(shù),他的主要作用就是配合?.操作符來(lái)進(jìn)行輔助判空處理2022-11-11
Android 判斷當(dāng)前語(yǔ)言環(huán)境是否是中文環(huán)境
本文主要介紹了Android 判斷當(dāng)前語(yǔ)言環(huán)境是否是中文環(huán)境的方法。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-04-04

