Android入门(八):使用RadioGroup 和RadioButton组件建立单选清单

  这一章,我们学习RadioGroup 和RadioButton组件,我们新建一个项目,编码过程与前几章的项目类似。

  1.建立字符串资源文件strings.xml;

<resources>    <string name="app_name">健身建议</string>    <string name="promptSex">性别:</string>    <string name="promptAge">年龄:</string>    <string name="promptBtnDoSug">健身建议</string>    <string name="sugResult">结果:</string>    <string name="sugYoga">进行瑜伽运动</string>    <string name="sugRun">跑步运动</string>    <string name="sugSwim">游泳运动</string>    <string name="male">男生</string>    <string name="female">女生</string>    <string name="maleAgeRng1">小于28岁</string>    <string name="maleAgeRng2">28~33岁</string>    <string name="maleAgeRng3">大于33岁</string>    <string name="femaleAgeRng1">小于25岁</string>    <string name="femaleAgeRng2">25~30岁</string>    <string name="femaleAgeRng3">大于30岁</string></resources>

  2.在接口布局文件中使用RadioGroup 和RadioButton标签,main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:gravity="center_horizontal">

    <TextView        android:layout_width="200dp"        android:layout_height="wrap_content"        android:textSize="20sp"        android:text="@string/promptSex"/>    <RadioGroup android:id="@+id/radGSex"        android:layout_width="200dp"        android:layout_height="wrap_content"        android:orientation="vertical"        android:checkedButton="@+id/radMale">        <RadioButton android:id="@+id/radMale"            android:textSize="20sp"            android:text="@string/male"/>        <RadioButton android:id="@+id/radFemale"            android:textSize="20sp"            android:text="@string/female"/>    </RadioGroup>    <TextView        android:layout_width="200dp"        android:layout_height="wrap_content"        android:textSize="20sp"        android:text="@string/promptSex"/>    <RadioGroup android:id="@+id/radGAge"        android:layout_width="200dp"        android:layout_height="wrap_content"        android:orientation="vertical"        android:checkedButton="@+id/radAgeRng1">        <RadioButton android:id="@+id/radBtnAgeRng1"            android:textSize="20sp"            android:text="@string/maleAgeRng1"/>        <RadioButton android:id="@+id/radBtnAgeRng2"            android:textSize="20sp"            android:text="@string/maleAgeRng2"/>        <RadioButton android:id="@+id/radBtnAgeRng3"            android:textSize="20sp"            android:text="@string/maleAgeRng3"/>    </RadioGroup>    <Button android:id="@+id/btnDoSug"        android:layout_width="200dp"        android:layout_height="wrap_content"        android:textSize="20sp"        android:text="@string/promptBtnDoSug"/>    <TextView android:id="@+id/txtResult"        android:layout_width="200dp"        android:layout_height="wrap_content"        android:textSize="20sp"        android:text="@string/sugResult"/></LinearLayout>

3.程序代码MainActivity
public class MainActivity extends Activity{    private Button btnDoSug;    private RadioGroup radGSex, radGAge;    private RadioButton radBtnAgeRng1, radBtnAgeRng2, radBtnAgeRng3;    private TextView txtResult;

    @Override    public void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);

        setupViewComponent();    }

    private void setupViewComponent()    {        btnDoSug = (Button)findViewById(R.id.btnDoSug);        radGSex = (RadioGroup)findViewById(R.id.radGSex);        radGAge = (RadioGroup)findViewById(R.id.radGAge);        radBtnAgeRng1 = (RadioButton)findViewById(R.id.radBtnAgeRng1);        radBtnAgeRng2 = (RadioButton)findViewById(R.id.radBtnAgeRng2);        radBtnAgeRng3 = (RadioButton)findViewById(R.id.radBtnAgeRng3);        txtResult = (TextView)findViewById(R.id.txtResult);

        btnDoSug.setOnClickListener(btnDoSugOnClick);        radGSex.setOnCheckedChangeListener(radGSexOnCheChanLis);    }

    private RadioGroup.OnCheckedChangeListener radGSexOnCheChanLis = new RadioGroup.OnCheckedChangeListener()    {        public void onCheckedChanged(RadioGroup group, int checkedId)        {            if(checkedId == R.id.radMale)            {                radBtnAgeRng1.setText(getString(R.string.maleAgeRng1));                radBtnAgeRng2.setText(getString(R.string.maleAgeRng2));                radBtnAgeRng3.setText(getString(R.string.maleAgeRng3));            }            else if(checkedId == R.id.radFemale)            {                radBtnAgeRng1.setText(getString(R.string.femaleAgeRng1));                radBtnAgeRng2.setText(getString(R.string.femaleAgeRng2));                radBtnAgeRng3.setText(getString(R.string.femaleAgeRng3));            }        }    };

    private Button.OnClickListener btnDoSugOnClick = new Button.OnClickListener()    {        public void onClick(View v)        {            int iCheckedRadBtn = radGSex.getCheckedRadioButtonId();            String strSug = getString(R.string.sugResult);            switch (iCheckedRadBtn )            {                case R.id.radMale:                    switch (radGAge.getCheckedRadioButtonId())                    {                        case R.id.radBtnAgeRng1:                            strSug += getString(R.string.sugYoga);                            break;                        case R.id.radBtnAgeRng2:                            strSug += getString(R.string.sugRun);                            break;                        default:                            strSug += getString(R.string.sugSwim);                    }                    break;                case R.id.radFemale:                    switch (radGAge.getCheckedRadioButtonId())                    {                        case R.id.radBtnAgeRng1:                            strSug += getString(R.string.sugYoga);                            break;                        case R.id.radBtnAgeRng2:                            strSug += getString(R.string.sugRun);                            break;                        default:                            strSug += getString(R.string.sugSwim);                    }                    break;            }            txtResult.setText(strSug);        }    };}效果图:

我们发现,当我们选择不同的性别时,下面的年龄范围也不一样,原因是setupViewComponent()方法的最后一行把RadioGroup.OnCheckedChangeListener对象设置给性别的RadioGroup对象,因此当我们选择不同的性别时,年龄选项就会跟着改变。
				
时间: 2024-08-24 06:37:26

Android入门(八):使用RadioGroup 和RadioButton组件建立单选清单的相关文章

Android控件之RadioGroup与RadioButton(单选控件)

一.RadioGroup与RadioButton 1.什么是RadioGroup: RadioButton的一个集合,提供多选机制 2.什么是RadioButton: RadioButton包裹在RadioGroup中,RadioGroup表示一组RadioButton,下面可以有很多个RadioButton,但只能有一个被选中 3.RadioGroup属性: android:orientation——  设置RadioGroup中RadioButton以什么形式排列(有两个值分别是:horiz

Android自学笔记之RadioGroup和RadioButton的使用

1.单独一个RadioButton选择之后无法取消,而CheckBox可以取消,因此不建RadioButton单独使用 RadioGroup与RadioButton: 1 RadioGroup是RadioButton的一个集合,提供多选一机制. 2 属性: android:orientation="" vertical 垂直排布 horizontal 水平排布 决定当前RadioButton以什么方式排布! <RadioGroup <RadioButton android:

android应用开发--------------看RadioGroup源代码,写相似单选选项卡的集成控件(如底部导航,tab等等)

博客为 有时个哥 原创.如需转载请标明出处:http://blog.csdn.net/ls703/article/details/46694967 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHM3MDM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center"> 上面就是需求设计,4个类似的布局控件.每次仅仅能选择一个.然后得到上面相应的钱数.(上面仅

Android入门(八)广播

原文链接:http://www.orlion.ga/572/ 一.广播机制 Android中的每个应用程序都可以对自己感兴趣的广播进行注册,这样该程序就只会接收到自己所关心的广播内容,这些广 播可能是来自于系统的,也可能是来自于其他应用程序的.Android提供了一套完整的 API,允许应用程序自由地发送和接收广播.发送广播的方法需要借助Intent.而接收广播的方法则需要引入一个新的概念,广播接收器(Broadcast Receiver) 广播可以分为两种类型: 标准广播:是一种完全异步的广播

android中RadioGroup、RadioButton、Spinner、EditText用法详解(含示例截图和源代码)

为了保护版权.尊重原创,转载请注明出处:http://blog.csdn.net/u013149325/article/details/43237757,谢谢! 今天在项目中用到了android中常用的RadioGroup.RadioButton.Spinner.EditText等控件,在此介绍一下它们的用法,希望对需要的朋友有帮助. 一.RadioGroup和RadioButton的使用 RadioButton就是我们常见的单选按钮,一个RadioGroup可以包含多个单选按钮,但是每次只能选

Android RadioGroup和RadioButton详解

实现RadioButton由两部分组成,也就是RadioButton和RadioGroup配合使用.RadioGroup是单选组合框,可以容纳多个RadioButton的容器.在没有RadioGroup的情况下,RadioButton可以全部都选中:当多个RadioButton被RadioGroup包含的情况下,RadioButton只可以选择一个.并用setOnCheckedChangeListener来对单选按钮进行监听 1 RadioGroup相关属性: 2 RadioGroup.getC

Android RadioGroup的RadioButton 选择改变字体颜色和背景颜色

RadioGroup <RadioGroup android:id="@+id/client_charge_radiogroup" android:layout_width="200dp" android:layout_height="40dp" android:layout_marginLeft="5dp" android:layout_alignParentRight="true" android

android单选按钮选择,RadioGroup,radioButton

android单选按钮选择,RadioGroup,radioButton 14. 四 / android基础 / 没有评论 单选布局绑定 如何识别选择

【Android自定义控件】支持多层嵌套RadioButton的RadioGroup

前言 非常喜欢用RadioButton+RadioGroup做Tabs,能自动处理选中等效果,但是自带的RadioGroup不支持嵌套RadioButton(从源码可看出仅仅是判断子控件是不是RadioButton),本文参考RadioGroup修改了一个支持嵌套CompoundButton的控件,非常实用. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com 正文 /** * 支持嵌套