您的位置:首页 > 移动开发 > Android开发

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

2016-08-19 17:21 627 查看
  这一章,我们学习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对象,因此当我们选择不同的性别时,年龄选项就会跟着改变。


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: