系出名门Android(6) - 控件(View)之DatePicker, TimePicker, ToggleButton, EditText, ProgressBar, SeekBar, AutoCompleteTextView, MultiAutoCompleteTextView
介绍
在 Android 中使用各种控件(View)
DatePicker - 日期选择控件
TimePicker - 时间选择控件
ToggleButton - 双状态按钮控件
EditText - 可编辑文本控件
ProgressBar - 进度条控件
SeekBar - 可拖动的进度条控件
AutoCompleteTextView - 支持自动完成功能的可编辑文本控件
MultiAutoCompleteTextView - 支持自动完成功能的可编辑文本控件,允许输入多值(多值之间会自动地用指定的分隔符分开)
1、DatePicker 的 Demo datepicker.xml 代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <!-- DatePicker - 日期选择控件 --> <DatePicker android:id="@+id/datePicker" android:layout_width="wrap_content" android:layout_height="wrap_content"> </DatePicker> </LinearLayout> _DatePicker.java 代码 package com.webabcd.view; import android.app.Activity; import android.os.Bundle; public class _DatePicker extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); this.setContentView(R.layout.datepicker); // 具体的应用可参见对话框中的示例 setTitle("DatePicker"); } } 2、TimePicker 的 Demo timepicker.xml 代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <!-- TimePicker - 时间选择控件 --> <TimePicker android:id="@+id/timePicker" android:layout_width="wrap_content" android:layout_height="wrap_content"> </TimePicker> </LinearLayout> _TimePicker.java 代码 package com.webabcd.view; import android.app.Activity; import android.os.Bundle; public class _TimePicker extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); this.setContentView(R.layout.timepicker); // 具体的应用可参见对话框中的示例 setTitle("TimePicker"); } } 3、ToggleButton 的 Demo togglebutton.xml 代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/textView" /> <!-- ToggleButton - 双状态按钮控件 textOn - 当按钮状态为 true 时所显示的文本 textOff - 当按钮状态为 false 时所显示的文本 --> <ToggleButton android:id="@+id/toggleButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textOn="关闭" android:textOff="打开" /> </LinearLayout> _ToggleButton.java 代码 package com.webabcd.view; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.ToggleButton; public class _ToggleButton extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); this.setContentView(R.layout.togglebutton); setTitle("ToggleButton"); final ToggleButton btn = (ToggleButton) this.findViewById(R.id.toggleButton); // setOnClickListener() - 响应按钮的鼠标单击事件 btn.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View v) { TextView txt = (TextView) _ToggleButton.this.findViewById(R.id.textView); // ToggleButton.isChecked() - 双状态按钮的按钮状态 txt.setText("按钮状态:" + String.valueOf(btn.isChecked())); } }); } } 4、EditText 的 Demo edittext.xml 代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <!-- EditText - 可编辑文本控件 --> <EditText android:id="@+id/editText" android:layout_width="fill_parent" android:layout_height="wrap_content"> </EditText> </LinearLayout> _EditText.java 代码 package com.webabcd.view; import android.app.Activity; import android.os.Bundle; import android.widget.EditText; public class _EditText extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); this.setContentView(R.layout.edittext); setTitle("EditText"); EditText txt = (EditText) this.findViewById(R.id.editText); txt.setText("我可编辑"); } } 5、ProgressBar 的 Demo progressbar.xml 代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <!-- ProgressBar - 进度条控件 --> <!--以下分别为大、中、小的进度条控件(圆圈状)--> <ProgressBar android:id="@+android:id/progress_large" style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ProgressBar android:id="@+android:id/progress" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ProgressBar android:id="@+android:id/progress_small" style="?android:attr/progressBarStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <!-- 进度条控件(条状)的演示 style - 进度条的样式,本例使用内置样式 max - 进度的最大值 progress - 第一进度位置 secondaryProgress - 第二进度位置 --> <ProgressBar android:id="@+id/progress_horizontal" style="?android:attr/progressBarStyleHorizontal" android:layout_width="200px" android:layout_height="wrap_content" android:max="100" android:progress="50" android:secondaryProgress="75" /> </LinearLayout> _ProgressBar.java 代码 package com.webabcd.view; import android.app.Activity; import android.os.Bundle; import android.view.Window; // 另见对话框中的进度条 public class _ProgressBar extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); // 设置特性以允许在应用程序的标题栏上显示进度条(条状) requestWindowFeature(Window.FEATURE_PROGRESS); // 设置特性以允许在应用程序的标题栏上显示进度条(圆圈状) requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); this.setContentView(R.layout.progressbar); setTitle("ProgressBar"); // 在标题栏上显示进度条(条状) setProgressBarVisibility(true); // 在标题栏上显示进度条(圆圈状) setProgressBarIndeterminateVisibility(true); // 指定进度条的进度 setProgress(50 * 100); setSecondaryProgress(75 * 100); } } 6、SeekBar 的 Demo seekbar.xml 代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <!-- SeekBar - 可拖动的进度条控件 max - 进度的最大值 progress - 第一进度位置 secondaryProgress - 第二进度位置 --> <SeekBar android:id="@+id/seekBar" android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="100" android:progress="50" android:secondaryProgress="75" /> <TextView android:id="@+id/progress" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/tracking" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> _SeekBar.java 代码 package com.webabcd.view; import android.app.Activity; import android.os.Bundle; import android.widget.SeekBar; import android.widget.TextView; public class _SeekBar extends Activity implements SeekBar.OnSeekBarChangeListener { SeekBar mSeekBar; TextView mProgressText; TextView mTrackingText; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); this.setContentView(R.layout.seekbar); setTitle("SeekBar"); mSeekBar = (SeekBar) findViewById(R.id.seekBar); // setOnSeekBarChangeListener() - 响应拖动进度条事件 mSeekBar.setOnSeekBarChangeListener(this); mProgressText = (TextView) findViewById(R.id.progress); mTrackingText = (TextView) findViewById(R.id.tracking); } // 拖动进度条后,进度发生改变时的回调事件 public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) { mProgressText.setText(progress + "%"); } // 拖动进度条前开始跟踪触摸 public void onStartTrackingTouch(SeekBar seekBar) { mTrackingText.setText("开始跟踪触摸"); } // 拖动进度条后停止跟踪触摸 public void onStopTrackingTouch(SeekBar seekBar) { mTrackingText.setText("停止跟踪触摸"); } } 7、AutoCompleteTextView 的 Demo autocompletetextview.xml 代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <!-- AutoCompleteTextView - 支持自动完成功能的可编辑文本控件 --> <AutoCompleteTextView android:id="@+id/editText" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> _AutoCompleteTextView.java 代码 package com.webabcd.view; import android.app.Activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; public class _AutoCompleteTextView extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.autocompletetextview); setTitle("AutoCompleteTextView"); // 实例化适配器,指定显示格式及数据源 ArrayAdapter<String> adapter = new ArrayAdapter<String>( this, android.R.layout.simple_dropdown_item_1line, ary); AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.editText); // 指定自动完成控件的适配器 textView.setAdapter(adapter); } // 自动完成控件的所需数据的数据源 private String[] ary = new String[] { "abc", "abcd", "abcde", "abcdef", "abcdefg", "hij", "hijk", "hijkl", "hijklm", "hijklmn", }; } 8、MultiAutoCompleteTextView 的 Demo multiautocompletetextview.xml 代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <!-- MultiAutoCompleteTextView - 支持自动完成功能的可编辑文本控件,允许输入多值(多值之间会自动地用指定的分隔符分开) --> <MultiAutoCompleteTextView android:id="@+id/editText" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> _MultiAutoCompleteTextView.java 代码 package com.webabcd.view; import android.app.Activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.MultiAutoCompleteTextView; public class _MultiAutoCompleteTextView extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.multiautocompletetextview); setTitle("MultiAutoCompleteTextView"); // 实例化适配器,指定显示格式及数据源 ArrayAdapter<String> adapter = new ArrayAdapter<String>( this, android.R.layout.simple_dropdown_item_1line, ary); MultiAutoCompleteTextView textView = (MultiAutoCompleteTextView) findViewById(R.id.editText); textView.setAdapter(adapter); // 设置多个值之间的分隔符,此处为逗号 textView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); } // 自动完成控件的所需数据的数据源 private String[] ary = new String[] { "abc", "abcd", "abcde", "abcdef", "abcdefg", "hij", "hijk", "hijkl", "hijklm", "hijklmn", }; }