android中RadioGroup、RadioButton、Spinner、EditText用法详解(含示例截图和源代码)
来源:互联网 发布:宁波智森网络 编辑:程序博客网 时间:2024/05/01 10:49
为了保护版权、尊重原创,转载请注明出处:http://blog.csdn.net/u013149325/article/details/43237757,谢谢!
今天在项目中用到了android中常用的RadioGroup、RadioButton、Spinner、EditText等控件,在此介绍一下它们的用法,希望对需要的朋友有帮助。
一、RadioGroup和RadioButton的使用
RadioButton就是我们常见的单选按钮,一个RadioGroup可以包含多个单选按钮,但是每次只能选择其中的一个值。
我们先看一下布局文件:
<span style="font-size:18px;"><RadioGroup android:id="@+id/quickResponseRG" android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="@string/ignore_quick_response" android:orientation="horizontal" > <RadioButton android:id="@+id/yesRadioButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/ignore_yes" android:textSize="22sp" /> <RadioButton android:id="@+id/noRadioButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/ignore_no" android:textSize="22sp" /> </RadioGroup></span>再来看一下RadioGroup的监听器接口:RadioGroup.OnCheckedChangeListener
public interface OnCheckedChangeListener { /** * <p>Called when the checked radio button has changed. When the * selection is cleared, checkedId is -1.</p> * * @param group the group in which the checked radio button has changed * @param checkedId the unique identifier of the newly checked radio button */ public void onCheckedChanged(RadioGroup group, int checkedId); }我们需要实现RadioGroup.OnCheckedChangeListener接口,重写onCheckedChanged(RadioGroup group, int checkedId)函数,参数group指定添加监听器的RadioGroup,参数checkedId指定选中的RadioButton的ID。
二、Spinner的使用
Spinner是下拉列表选择框,可以绑定数据源,数据源可以在程序中定义,也可以在values/strings中定义字符串数组,还可以在数据库中查询获取。
布局很简单,详见后面的例子。
绑定数据源:
String[] intervalTime = getResources().getStringArray(R.array.intervalTime);ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, intervalTime);bstIntervalSpinner.setAdapter(adapter);设置监听器接口:AdapterView.OnItemSelectedListener
public interface OnItemSelectedListener { /** * <p>Callback method to be invoked when an item in this view has been * selected. This callback is invoked only when the newly selected * position is different from the previously selected position or if * there was no selected item.</p> * * Impelmenters can call getItemAtPosition(position) if they need to access the * data associated with the selected item. * * @param parent The AdapterView where the selection happened * @param view The view within the AdapterView that was clicked * @param position The position of the view in the adapter * @param id The row id of the item that is selected */ void onItemSelected(AdapterView<?> parent, View view, int position, long id); /** * Callback method to be invoked when the selection disappears from this * view. The selection can disappear for instance when touch is activated * or when the adapter becomes empty. * * @param parent The AdapterView that now contains no selected item. */ void onNothingSelected(AdapterView<?> parent); }我们需要实现AdapterView.OnItemSelectedListener接口,重写onItemSelected(AdapterView<?> parent, View view, int position, long id)方法。
三、EditText的使用
EditText很常见,用来输入文本,给它添加监听器可以实时监测已经输入的文本内容,包括查看是否有错误、输入是否符合规范、长度是否超出了范围。
添加监听器:
powerEditText.addTextChangedListener(editTextListener);监听器实现TextWatcher接口:
public interface TextWatcher extends NoCopySpan { /** * This method is called to notify you that, within <code>s</code>, * the <code>count</code> characters beginning at <code>start</code> * are about to be replaced by new text with length <code>after</code>. * It is an error to attempt to make changes to <code>s</code> from * this callback. */ public void beforeTextChanged(CharSequence s, int start, int count, int after); /** * This method is called to notify you that, within <code>s</code>, * the <code>count</code> characters beginning at <code>start</code> * have just replaced old text that had length <code>before</code>. * It is an error to attempt to make changes to <code>s</code> from * this callback. */ public void onTextChanged(CharSequence s, int start, int before, int count); /** * This method is called to notify you that, somewhere within * <code>s</code>, the text has been changed. * It is legitimate to make further changes to <code>s</code> from * this callback, but be careful not to get yourself into an infinite * loop, because any changes you make will cause this method to be * called again recursively. * (You are not told where the change took place because other * afterTextChanged() methods may already have made other changes * and invalidated the offsets. But if you need to know here, * you can use {@link Spannable#setSpan} in {@link #onTextChanged} * to mark your place and then look up from here where the span * ended up. */ public void afterTextChanged(Editable s);}我们可以根据需要重写beforeTextChanged(CharSequence s, int start, int count, int after)、onTextChanged(CharSequence s, int start, int before, int count)、afterTextChanged(Editable s)这三个方法。
四、示例和源代码
先上效果图:
在上图中,有3个RadioGroup、2个Spinner和1个EditText,由于程序中设置了监听器,所以上面选项设置的值都会在分割线下面实时显示出结果。
源代码:
布局文件:
<?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" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/ignoreTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/ignore_quick_response" android:textSize="22sp" /> <RadioGroup android:id="@+id/quickResponseRG" android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="@string/ignore_quick_response" android:orientation="horizontal" > <RadioButton android:id="@+id/yesRadioButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/ignore_yes" android:textSize="22sp" /> <RadioButton android:id="@+id/noRadioButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/ignore_no" android:textSize="22sp" /> </RadioGroup> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/BSTintervalTV" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/BST_interval" android:textSize="22sp" /> <Spinner android:id="@+id/BSTintervalSpinner" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/trans_retry" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/trans_retry_interval" android:textSize="22sp" /> <Spinner android:id="@+id/transRetrySpinner" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/powerTV" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/power" android:textSize="22sp" /> <EditText android:id="@+id/powerEditText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="text" android:text="@string/default_power" android:textSize="22sp" /> <TextView android:id="@+id/powerRangeTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/power_range" android:textSize="22sp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/channelTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/channel_num" android:textSize="22sp" /> <RadioGroup android:id="@+id/channelNumRG" android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="@string/ignore_quick_response" android:orientation="horizontal" > <RadioButton android:id="@+id/channelRadioButton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/zero" android:textSize="22sp" /> <RadioButton android:id="@+id/channelRadioButton2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/one" android:textSize="22sp" /> </RadioGroup> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/crcTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/crc_check" android:textSize="22sp" /> <RadioGroup android:id="@+id/crcCheckRG" android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="@string/ignore_quick_response" android:orientation="horizontal" > <RadioButton android:id="@+id/crcRadioButton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/zero" android:textSize="22sp" /> <RadioButton android:id="@+id/crcRadioButton2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/one" android:textSize="22sp" /> </RadioGroup> </LinearLayout> <View android:id="@+id/line" android:layout_width="match_parent" android:layout_height="2dip" android:background="#FF909090"/> <TextView android:id="@+id/result" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/setResult" android:textSize="22sp"/> <TextView android:id="@+id/result1" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="22sp"/> <TextView android:id="@+id/result2" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="22sp"/> <TextView android:id="@+id/result3" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="22sp"/> <TextView android:id="@+id/result4" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="22sp"/> <TextView android:id="@+id/result5" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="22sp"/> <TextView android:id="@+id/result6" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="22sp"/> </LinearLayout>Java类文件:
package readAndWriteOBU;import android.app.Activity;import android.os.Bundle;import android.text.Editable;import android.text.TextWatcher;import android.view.View;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.EditText;import android.widget.RadioButton;import android.widget.RadioGroup;import android.widget.Spinner;import android.widget.TextView;import com.hustxks.etcapp.R;public class InitActivity extends Activity{//忽略快速响应帧单选框private RadioGroup quickResponseRadioGroup;private RadioButton yesRadioButton;private RadioButton noRadioButton;//BST间隔下拉列表private Spinner bstIntervalSpinner; //交易重试间隔下拉列表private Spinner transIntervalSpinner;//功率级数编辑框private EditText powerEditText;//信道号单选框private RadioGroup channelNumRadioGroup;private RadioButton channelRadioButton1;private RadioButton channelRadioButton2;//CRC校验单选框private RadioGroup crcCkeckRadioGroup;private RadioButton crcRadioButton1;private RadioButton crcRadioButton2;//是否忽略快速响应帧标志:00:忽略快速响应 01:完全透传public static String ignoreQuickResFlag = "0";//BST间隔,单位ms,范围1~10mspublic static String bstInterval = "10";//交易重试间隔,单位ms,范围1~10mspublic static String transRetryInterval = "10";//功率级数,范围0~31public static String power = "5";//信道号,取值0,1public static String channelID = "0";//CRC校验标志位,取值0,1public static String crcCheckFlag = "0";private String[] intervalTime;//显示设置结果文本框TextView resultTextView1;TextView resultTextView2;TextView resultTextView3;TextView resultTextView4;TextView resultTextView5;TextView resultTextView6;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.init_activity);initView();RadioGroupListener quickRadioGroupListener = new RadioGroupListener(quickResponseRadioGroup);RadioGroupListener channelRadioGroupListener = new RadioGroupListener(channelNumRadioGroup);RadioGroupListener crcRadioGroupListener = new RadioGroupListener(crcCkeckRadioGroup);EditTextListener editTextListener = new EditTextListener();quickResponseRadioGroup.setOnCheckedChangeListener(quickRadioGroupListener);channelNumRadioGroup.setOnCheckedChangeListener(channelRadioGroupListener);crcCkeckRadioGroup.setOnCheckedChangeListener(crcRadioGroupListener);powerEditText.addTextChangedListener(editTextListener);intervalTime = getResources().getStringArray(R.array.intervalTime);ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, intervalTime);bstIntervalSpinner.setAdapter(adapter);transIntervalSpinner.setAdapter(adapter);SpinnerListener bstSpinnerListener = new SpinnerListener(bstIntervalSpinner);bstIntervalSpinner.setOnItemSelectedListener(bstSpinnerListener);SpinnerListener retrySpinnerListener = new SpinnerListener(transIntervalSpinner);transIntervalSpinner.setOnItemSelectedListener(retrySpinnerListener);}private void initView() {quickResponseRadioGroup = (RadioGroup)findViewById(R.id.quickResponseRG);yesRadioButton = (RadioButton)findViewById(R.id.yesRadioButton);noRadioButton = (RadioButton)findViewById(R.id.noRadioButton);bstIntervalSpinner = (Spinner)findViewById(R.id.BSTintervalSpinner);transIntervalSpinner = (Spinner)findViewById(R.id.transRetrySpinner);powerEditText = (EditText)findViewById(R.id.powerEditText);channelNumRadioGroup = (RadioGroup)findViewById(R.id.channelNumRG);channelRadioButton1 = (RadioButton)findViewById(R.id.channelRadioButton1);channelRadioButton2 = (RadioButton)findViewById(R.id.channelRadioButton2);crcCkeckRadioGroup = (RadioGroup)findViewById(R.id.crcCheckRG);crcRadioButton1 = (RadioButton)findViewById(R.id.crcRadioButton1);crcRadioButton2 = (RadioButton)findViewById(R.id.crcRadioButton2);resultTextView1 = (TextView)findViewById(R.id.result1);resultTextView2 = (TextView)findViewById(R.id.result2);resultTextView3 = (TextView)findViewById(R.id.result3);resultTextView4 = (TextView)findViewById(R.id.result4);resultTextView5 = (TextView)findViewById(R.id.result5);resultTextView6 = (TextView)findViewById(R.id.result6);}//监听RadioGroup的类class RadioGroupListener implements RadioGroup.OnCheckedChangeListener {private RadioGroup myRadioGroup;public RadioGroupListener(RadioGroup radioGroup) {// TODO Auto-generated constructor stubthis.myRadioGroup = radioGroup;}@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {// TODO Auto-generated method stubswitch (myRadioGroup.getId()) {case R.id.quickResponseRG:if (checkedId == R.id.yesRadioButton) {ignoreQuickResFlag = "00";}else if (checkedId == R.id.noRadioButton) {ignoreQuickResFlag = "01";}resultTextView1.setText(ignoreQuickResFlag);break;case R.id.channelNumRG:if (checkedId == R.id.channelRadioButton1) {channelID = channelRadioButton1.getText().toString().trim();}else if (checkedId == R.id.channelRadioButton2) {channelID = channelRadioButton2.getText().toString().trim();}resultTextView5.setText(channelID);;break;case R.id.crcCheckRG:if (checkedId == R.id.crcRadioButton1) {crcCheckFlag = crcRadioButton1.getText().toString().trim();}else if (checkedId == R.id.crcRadioButton2) {crcCheckFlag = crcRadioButton2.getText().toString().trim();}resultTextView6.setText(crcCheckFlag);break;default:break;}}}//监听EditText的类class EditTextListener implements TextWatcher {@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {}@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {}@Overridepublic void afterTextChanged(Editable s) {power = powerEditText.getText().toString().trim();resultTextView4.setText(power);}}//监听Spinner的类class SpinnerListener implements AdapterView.OnItemSelectedListener {private Spinner mySpinner;public SpinnerListener(Spinner spinner) {// TODO Auto-generated constructor stubthis.mySpinner = spinner;}@Overridepublic void onItemSelected(AdapterView<?> parent, View view,int position, long id) {if (mySpinner.getId() == R.id.BSTintervalSpinner) {bstInterval = intervalTime[position];resultTextView2.setText(bstInterval);}else if (mySpinner.getId() == R.id.transRetrySpinner) {transRetryInterval = intervalTime[position];resultTextView3.setText(transRetryInterval);}}@Overridepublic void onNothingSelected(AdapterView<?> parent) {}}}到此结束,转载请注明出处,谢谢!
0 0
- android中RadioGroup、RadioButton、Spinner、EditText用法详解(含示例截图和源代码)
- android开发中SharedPreferences用法详解(含源代码和运行结果截图)
- android RadioGroup和RadioButton的用法
- Android RadioGroup和RadioButton案例及详解
- Android RadioGroup和RadioButton案例及详解
- Android RadioGroup和RadioButton案例及详解
- Android RadioGroup和RadioButton案例及详解
- Android RadioGroup和RadioButton案例及详解
- Android RadioGroup和RadioButton案例及详解
- Android RadioGroup和RadioButton案例及详解
- Android RadioGroup和RadioButton案例及详解
- Android RadioGroup和RadioButton案例及详解
- Android RadioGroup和RadioButton案例及详解
- Android中RadioGroup和RadioButton布局实例
- Android RadioGroup和RadioButton
- Android学习(十一)RadioButton和RadioGroup
- Android RadioGroup和RadioButton使用
- 学Android---RadioGroup和RadioButton
- 定义集合enum时出错
- 21分钟 MySQL 入门教程
- PHP入门基础学习篇(五)
- 计算2对经纬度距离的方法
- 非arc工程导入arc库文件与arc工程导入非arc库文件
- android中RadioGroup、RadioButton、Spinner、EditText用法详解(含示例截图和源代码)
- 【BZOJ 3052】 [wc2013]糖果公园
- 国外优秀JavaScript资源推荐
- 【SzNOI语法百题】【d024】求两个数的公倍数
- 内部类和异常处理
- UIButton点击不灵敏的问题.
- unigine(1)——unigine简介
- Android开发:使用Fragment改造TabActivity
- java中内部类笔记