Android控制項系列之RadioButton&RadioGroup

來源:互聯網
上載者:User

學習目的:

1、掌握在Android中如何建立RadioGroup和RadioButton

2、掌握RadioGroup的常用屬性

3、理解RadioButton和CheckBox的區別

4、掌握RadioGroup選中狀態變換的事件(監聽器)

學習目的:


1、掌握在Android中如何建立RadioGroup和RadioButton


2、掌握RadioGroup的常用屬性


3、理解RadioButton和CheckBox的區別


4、掌握RadioGroup選中狀態變換的事件(監聽器)






RadioButton和CheckBox的區別:
1、單個RadioButton在選中後,通過點擊無法變為未選中


單個CheckBox在選中後,通過點擊可以變為未選中


2、一組RadioButton,只能同時選中一個


一組CheckBox,能同時選中多個


3、RadioButton在大部分UI架構中預設都以圓形表示


CheckBox在大部分UI架構中預設都以矩形表示


RadioButton和RadioGroup的關係:


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


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


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


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


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


XML布局:


                


選中項變更的事件監聽:


當RadioGroup中的選中項變更後,您可能需要做一些相應,比如上述例子中,性別選擇“女”後下面的本文也相應改變,又或者選擇不同的性別後,出現符合該性別的頭像列表進行更新,女生不會喜歡使用大鬍子作為自己的頭像。


如果您對監聽器不熟悉,可以閱讀Android控制項系列之Button以及Android監聽器。


後台代碼如下:

TextView tv = null;//根據不同選項所要變更的文本控制項    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);                setContentView(R.layout.main);                //根據ID找到該文本控制項        tv = (TextView)this.findViewById(R.id.tvSex);        //根據ID找到RadioGroup執行個體        RadioGroup group = (RadioGroup)this.findViewById(R.id.radioGroup);        //綁定一個匿名監聽器        group.setOnCheckedChangeListener(new OnCheckedChangeListener() {                        @Override            public void onCheckedChanged(RadioGroup arg0, int arg1) {                // TODO Auto-generated method stub                //擷取變更後的選中項的ID                int radioButtonId = arg0.getCheckedRadioButtonId();                //根據ID擷取RadioButton的執行個體                RadioButton rb = (RadioButton)MyActiviy.this.findViewById(radioButtonId);                //更新常值內容,以符合選中項                tv.setText("您的性別是:" + rb.getText());            }        });    }


效果如下:






總結:


本文介紹了Android中如何使用RadioGroup和RadioButton,對比了RadioButton和CheckBox的區別,並實現了自訂的RadioGroup中被選中RadioButton的變更監聽事件。<喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KUmFkaW9CdXR0b266zUNoZWNrQm94tcTH+LHwo7oKPHA+MaGitaW49lJhZGlvQnV0dG9u1NrRodbQuvOjrM2ouf2147v3zt63qLHkzqrOtNGh1tA8L3A+CjxwPiAgICC1pbj2Q2hlY2tCb3jU2tGh1tC686Oszai5/bXju/e/ydLUseTOqs600aHW0DwvcD4KPHA+MqGi0rvX6VJhZGlvQnV0dG9uo6zWu8TczazKsdGh1tDSu7j2PC9wPgo8cD4gICAgINK71+lDaGVja0JveKOsxNzNrMqx0aHW0LbguPY8L3A+CjxwPjOholJhZGlvQnV0dG9u1Nq087K/t9ZVSb/yvNzW0MSsyM+2vNLU1LLQzrHtyr48L3A+CjxwPiAgICAgQ2hlY2tCb3jU2rTzsr+31lVJv/K83NbQxKzIz7a80tS+2NDOse3KvjwvcD4KPHA+UmFkaW9CdXR0b266zVJhZGlvR3JvdXC1xLnYz7WjujwvcD4KPHA+MaGiUmFkaW9CdXR0b26x7cq+taW49tSy0M61pdGhv/KjrLb4UmFkaW9Hcm91cMrHv8nS1MjdxMm24Lj2UmFkaW9CdXR0b261xMjdxvc8L3A+CjxwPjKhosO/uPZSYWRpb0dyb3Vw1tC1xFJhZGlvQnV0dG9uzazKsda7xNzT0NK7uPaxu9Gh1tA8L3A+CjxwPjOhorK7zay1xFJhZGlvR3JvdXDW0LXEUmFkaW9CdXR0b267pbK7z+C4yaOsvLTI57n71+lB1tDT0NK7uPbRodbQwcujrNfpQtbQ0sDIu7/J0tTT0NK7uPaxu9Gh1tA8L3A+CjxwPjShorTzsr+31rOhus/PwqOs0ru49lJhZGlvR3JvdXDW0NbBydnT0DK49lJhZGlvQnV0dG9uPC9wPgo8cD41oaK087K/t9azobrPz8KjrNK7uPZSYWRpb0dyb3Vw1tC1xFJhZGlvQnV0dG9uxKzIz7vh09DSu7j2sbvRodbQo6yyor2o0unE+r2ry/y3xdTaUmFkaW9Hcm91cNbQtcTG8Mq8zrvWwzwvcD4KPHA+16KjusnPzsTW0LXExMe2zmphdmG0+sLrts7Ssr/J0tTQtLPJyOfPwrXEtPrC66O6PC9wPgo8cD48cHJlIGNsYXNzPQ=="brush:java;">package com.android.test;import android.app.Activity;import android.os.Bundle;import android.widget.RadioButton;import android.widget.RadioGroup;import android.widget.TextView;public class RadioGroupDemo extends Activity { public TextView mTextView1; public RadioGroup mRadioGroup1; public RadioButton mRadio1,mRadio2; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); /*取得 TextView、RadioGroup、RadioButton對象*/ mTextView1 = (TextView) findViewById(R.id.myTextView); mRadioGroup1 = (RadioGroup) findViewById(R.id.myRadioGroup); mRadio1 = (RadioButton) findViewById(R.id.myRadioButton1); mRadio2 = (RadioButton) findViewById(R.id.myRadioButton2); /*RadioGroup用OnCheckedChangeListener來運行*/ mRadioGroup1.setOnCheckedChangeListener(mChangeRadio); } private RadioGroup.OnCheckedChangeListener mChangeRadio = new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { // TODO Auto-generated method stub if(checkedId==mRadio1.getId()) { /*把mRadio1的內容傳到mTextView1*/ mTextView1.setText(mRadio1.getText()); } else if(checkedId==mRadio2.getId()) { /*把mRadio2的內容傳到mTextView1*/ mTextView1.setText(mRadio2.getText()); } } }; }
或者最簡單的一種:

rg=(RadioGroup)findViewById(R.id.rg);show=(TextView)findViewById(R.id.show);rg.setOnCheckedChangeListener(new OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) { //根據使用者勾選的選項按鈕來動態改變tip字串的值  final String tip=(checkedId==R.id.male?"男":"女");          show.setText(tip);}});


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.