API Demos 2.3 学习笔记 (15)-- Views->Radio Group
来源:互联网 发布:unity3d解包 编辑:程序博客网 时间:2024/05/24 08:32
更多精彩内容,请点击阅读:《API Demos 2.3 学习笔记》
RadioGroup的创建主要有两种方法:
1、在xml布局文件中
<RadioGroup android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:checkedButton="@+id/lunch" android:id="@+id/menu"> <RadioButton android:text="@string/radio_group_1_breakfast" android:id="@+id/breakfast" /> <RadioButton android:text="@string/radio_group_1_lunch" android:id="@id/lunch" /> <RadioButton android:text="@string/radio_group_1_dinner" android:id="@+id/dinner" /> <RadioButton android:text="@string/radio_group_1_all" android:id="@+id/all" /> </RadioGroup>注:上面演示的是在一个RadioGroup中包含四个RadioButton的情况,您可以根据自己实际需要来增加或者减少RadioButton的个数。
2、在Java代码中
// 通过findViewById方法获得一个RadioGroup对象 RadioGroup mRadioGroup = (RadioGroup) findViewById(R.id.menu); // 向RadioGroup中动态添加一个RadioButton对象 RadioButton newRadioButton = new RadioButton(this); newRadioButton.setText(R.string.radio_group_snack); newRadioButton.setId(R.id.snack); LinearLayout.LayoutParams layoutParams = new RadioGroup.LayoutParams( RadioGroup.LayoutParams.WRAP_CONTENT, RadioGroup.LayoutParams.WRAP_CONTENT); mRadioGroup.addView(newRadioButton, 0, layoutParams);注:这里我们首先创建了一个 RadioGroup对象和一个 RadioButton对象,然后通过 addView函数将 RadioButton添加到RadioGroup中。其中 addView函数的第二个参数,表示将 RadioButton添加到RadioGroup内部的什么位置(从0开始)。 RadioButton通过 setText和 setId分别设定文本和资源ID号码。
当我们做单项选择题的时候,可以很快看到选择的是哪个选项。但是在Android中使用RadioGroup时,我们怎么通过程序来获得用户到底选择的是哪个选项呢?这就要用到我们常用的方法(监听器)了。具体使用方法如下:
// 通过findViewById方法获得一个RadioGroup对象 RadioGroup mRadioGroup = (RadioGroup) findViewById(R.id.menu);//当RadioButton状态发生改变时,触发监听器,执行下面的动作。当清除选择项时,checkedId为-1。mRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {public void onCheckedChanged(RadioGroup group, int checkedId) {// TODO Auto-generated method stubString choice = null;//根据checkedId判断用户选择了哪一个选项,并执行相应的动作。switch (checkedId) {case R.id.breakfast: choice = "breakfast";break;case R.id.lunch:choice = "lunch";break;case R.id.dinner:choice = "dinner";break;case R.id.all:choice = "all";break;case R.id.snack:choice = "snack";break; default:break;}}});注:我们可以根据监听器中的 checkedId来判断是哪一个选项被选择,并执行相应的动作。
下面我们进行实例代码解析:
res-values-string.xml
<?xml version="1.0" encoding="utf-8"?><resources> <string name="radio_group_1_breakfast">Breakfast</string> <string name="radio_group_1_lunch">Lunch</string> <string name="radio_group_1_dinner">Dinner</string> <string name="radio_group_1_all">All of them</string> <string name="radio_group_1_selection">You have selected: (none)</string> <string name="radio_group_1_clear">Clear</string></resources>
res-layout-radio_group_1.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <!-- 一个RadioGroup(单项选择组)对象,内含4个RadioButton(单项选择按钮)和一个TextView对象 --> <RadioGroup android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:checkedButton="@+id/lunch" android:id="@+id/menu"> <RadioButton android:text="@string/radio_group_1_breakfast" android:id="@+id/breakfast" /> <RadioButton android:text="@string/radio_group_1_lunch" android:id="@id/lunch" /> <RadioButton android:text="@string/radio_group_1_dinner" android:id="@+id/dinner" /> <RadioButton android:text="@string/radio_group_1_all" android:id="@+id/all" /> <TextView android:text="@string/radio_group_1_selection" android:id="@+id/choice" /> </RadioGroup> <!-- 一个Button对象,用于清除RadioGroup的选择项 --> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/radio_group_1_clear" android:id="@+id/clear" /></LinearLayout>
src-com.example.android.apis.view-RadioGroup1.java
package com.example.android.apis.view;import com.example.android.apis.R;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.TextView;import android.widget.RadioGroup;import android.widget.Button;import android.widget.RadioButton;import android.widget.LinearLayout;public class RadioGroup1 extends Activity implements RadioGroup.OnCheckedChangeListener, View.OnClickListener { private TextView mChoice; private RadioGroup mRadioGroup; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.radio_group_1); // 通过findViewById方法获得一个RadioGroup对象 mRadioGroup = (RadioGroup) findViewById(R.id.menu); // 向RadioGroup中动态添加一个RadioButton对象 RadioButton newRadioButton = new RadioButton(this); newRadioButton.setText(R.string.radio_group_snack); newRadioButton.setId(R.id.snack); LinearLayout.LayoutParams layoutParams = new RadioGroup.LayoutParams( RadioGroup.LayoutParams.WRAP_CONTENT, RadioGroup.LayoutParams.WRAP_CONTENT); mRadioGroup.addView(newRadioButton, 0, layoutParams); //为RadioGroup添加监听器,当点击RadioButton时,会触发监听器, 执行onCheckedChanged中的动作 mRadioGroup.setOnCheckedChangeListener(this); //在TextView控件上显示被选择项的提示信息 String selection = getString(R.string.radio_group_selection); mChoice = (TextView) findViewById(R.id.choice); mChoice.setText(selection + mRadioGroup.getCheckedRadioButtonId()); // 通过findViewById方法获得一个Button对象,点击该对象会清除RadioGroup中的选择项 Button clearButton = (Button) findViewById(R.id.clear); clearButton.setOnClickListener(this); } //当RadioButton状态发生改变时,触发监听器,执行下面的动作。当清除选择项时,checkedId为-1。 public void onCheckedChanged(RadioGroup group, int checkedId) { String selection = getString(R.string.radio_group_selection); String none = getString(R.string.radio_group_none); String choice = null; //根据checkedId判断用户选择了哪一个选项,并执行相应的动作。 switch (checkedId) { case R.id.breakfast: choice = "breakfast"; break; case R.id.lunch: choice = "lunch"; break; case R.id.dinner: choice = "dinner"; break; case R.id.all: choice = "all"; break; case R.id.snack: choice = "snack"; break; default: break; } mChoice.setText(selection + choice + (checkedId == View.NO_ID ? none : checkedId)); } //点击clearButton时,清空所有RadioButton的选择状态 public void onClick(View v) { mRadioGroup.clearCheck(); }}
- API Demos 2.3 学习笔记 (15)-- Views->Radio Group
- API Demos 2.3 学习笔记 (7)-- Views->Buttons
- API Demos 2.3 学习笔记 (8)-- Views->ImageButton
- API Demos 2.3 学习笔记 (9)-- Views->Visibility
- API Demos 2.3 学习笔记 (10)-- Views->WebView
- API Demos 2.3 学习笔记 (11)-- Views->Date Widgets
- API Demos 2.3 学习笔记 (12)-- Views->Rating Bar
- API Demos 2.3 学习笔记 (13)-- Views->Seek Bar
- API Demos 2.3 学习笔记 (14)-- Views->Progress Bar
- API Demos 2.3学习笔记(10)-- Views->WebView
- API Demos 2.3 学习笔记 (16)-- Views->Spinner
- API Demos 2.3 学习笔记 (17)-- Views->Tabs
- API Demos 2.3 学习笔记 (18)-- Views-> ScrollBars
- API Demos 2.3 学习笔记 (19)-- Views-> TextSwitcher
- API Demos 2.3 学习笔记 (20)-- Views->Lists->Array
- API Demos 2.3 学习笔记 (10)-- Views->WebView
- API Demos 2.3 学习笔记
- API Demos 2.3 学习笔记 (3)-- Android应用程序架构
- XML 自学笔记 Lesson3
- 分享Silverlight/WPF/Windows Phone一周学习导读(10月1日-10月15日)
- Foundations of Software Engineering 和 Software Engineering Concepts
- 兆鹏和您学PHP5——PHP5中的数据串行化
- 形式化方法(当时我就只翻译了这一段,因为我认为还是直接读原文更好)
- API Demos 2.3 学习笔记 (15)-- Views->Radio Group
- Android 常用 mimeType 表
- getCurrentSession 与 openSession() 的区别
- 敏捷开发:60分钟掌握敏捷估计和规划
- 世界上最短的时钟代码!更短的,有木有?
- 我对架构的理解-概念篇
- 一副图片带来的声望和恶意
- 有史以来十大互联网数字媒体并购
- 高效随机数生成