这里介绍一些我们在开发过程中会经常使用到的控件。
EditText(编辑文件的控件)
EditText是除了TextView控件外的另一个非常重要的控件,同时该类也是TextView的子类,因此EditText拥有着TextView的一切XML属性的方法。
二者的区别就是EditText可以输入文本,而TextView一般只用于显示文本。
EditText的可以像一些聊天软件一样输入表情
我们还可以在EditText中让用户输入我们特定的字符。
例如只允许输入数字0-9,我们可以在XML中这样设置它的属性:
android:digits="0123456789";或者android:inputType="number";或者android:numeric="integer"。
以上3种方式任选一种就可实现只允许输入数字,当然同理还可以设置文字、时间、电子邮箱等。
建议大家最好使用android:inputType来设置,这样系统自动提供的虚拟键盘也会随着允许的类型而变化。
提到EditText,它还有一个扩展控件AutoCompleteTextView,AutoCompleteTextView可以像Google搜索框一样在编辑框下方列出可供选择的列表,
这个控件并不复杂但很实用,这里不再作介绍。
Button(普通按钮控件)
Button控件的基本用法和TextView等控件并无太大的差异,因为它和EditText一样,也是TextView的子类。
像一些图文混排的样式,我们同样可以通过SpannableString对象来设置,这里不作演示。
它最常用的按钮事件是单击事件,可以通过Button类的setOnClickListener方法设置,
也可以直接在Xml里面通过android:onClick属性指定单击事件方法。如果当前的这个Activity类还实现了onClickListener的接口,我们还可以直接
将this传入setOnClickListener方法,代码如下:
public class MusicActivity extends Activity implements OnClickListener{ .......... btnStart.setOnClickListener(this); @Override public void onClick(View v) { switch (v.getId()) { case R.id.btnStart: break; case R.id.btnNext: break; .........
ImageButton(图像按钮控件)
ImageButton可以作为图像按钮来使用,Xml设置:android:src;代码设置:setImageResource或者其它方法。
唯一需要注意的是,ImageButton和普通的Button不一样,ImageButton并不是TextView的子类,而是ImageView的子类,
所以它没有android:text的属性,如果想要在ImageButton上输入文字,可以自定义一个控件继承ImageButton,并重写onDraw方法把文字画在控件上。
RadioButton(选项按钮控件)
选项按钮可用于多选一的应用中。RadioButton是Button的间接子类,android:drawableLeft等属性可以做出很好看的样式。
对了,在开发过程中,要想使用多组RadioButton可在Xml中使用RadioGroup标签分组。
ToggleButton(开关状态按钮控件)
ToggleButton是Button的子类,但android:text属性是没用的,要在android:textOn或者android:textOff属性中修改。
CheckBox(复选框控件)
复选框用于多选的应用,CheckBox的默认情况是未选中,可在Xml中的android:checked属性或者是代码中CheckBox.setChecked方法设置。
我们可以通过CheckBox.isChecked()方法来判断该控件是否处于选中状态。
ImageView(显示图像的控件)
ImageView控件是非常常用也非常重要的控件,它是专门用来显示和控制图像的,如放大、缩小、旋转等。
在Xml中可以通过android:src属性来指定图像资源,android:scaleType属性来指定显示图像的方式,如
android:scaleType="center" 表示图像以不缩放的方式显示在控件的中心
android:scaleType="fitCenter" 表示将图像按比例缩放至合适的位置,并显示在控件的中心
......其它还有一些,大家可以去自己试一下。
除了在Xml中直接设置宽高外,我们还可在代码中这样写:imageView.setLayoutParams(new LayoutParams(int width, intheight));
然后我们得到宽高:int width =imageView.getLayoutParams().width;
关于控件图像的详细介绍,如显示指定区域的图像、缩放、旋转等,我们将在后面学习更为全面的知识。
DatePicker(输入日期的控件)
该控件可用于输入日期,输入范围是1900-1-1~2100-12-31。通过DatePicker类的init方法对控件进行初始化。
在用户操作完成后,我们可以用DatePicker类的getYear,getMonth,getDayOfMonth方法来获得当前控件显示的年月日。
TimePicker(输入时间的控件)
该控件用来输入时间,默认是12小时进制,可以通过TimePicker类的setIs24HourView方法设置。
AnalogClock和DigitalClock(显示时钟的控件)
ActivityClock以表盘的方式显示当前时间,只有时针和分针。DigitalClock以数字方式显示当前时间。
ProgressBar(进度条控件)
ProgressBar在默认情况下是中型的圆形进度条,可通过style属性来更改:
style="?android:attr/progressBarStyleLarge" 大型圆形
style="?android:attr/progressBarStyleSmall" 小型圆形
style="?android:attr/progressBarStyleHorizontal" 水平进度条
进度条的总刻度使用android:max属性设置,它不一定就是100,可以是一个任意的合法的正整数,另外android:progress和
android:secondaryProgress属性分别表示它的两级进度。一般这两个值应该是要小于总刻度的但,你超过了也不会报错,会显示100%的状态。
我们还可以把进度条设置到Activity的标题栏上:
super.onCreate(savedInstanceState); //必须在调用setContentView方法之前设置 requestWindowFeature(Window.FEATURE_PROGRESS); setContentView(R.layout.main); //显示圆形进度条 setProgressBarIndeterminateVisibility(true); super.onCreate(savedInstanceState); //必须在调用setContentView方法之前设置 requestWindowFeature(Window.FEATURE_PROGRESS); setContentView(R.layout.main); //显示水平进度条 setProgressBarVisibility(true); //设置当前进度 setProgress(1000);SeekBar(拖动条控件)
SeekBar控件可以通过拖动滑杆改变当前的值,可以利用它来设置具有一定范围的变量值,例如播放器的快进快退功能等。
它是ProgressBar的子类,基本操作可参考上面的介绍,这里只说这3个事件:
SeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { // 拖动停止后要处理的动作 } @Override public void onStartTrackingTouch(SeekBar seekBar) { // 拖动开始时要处理的动作 } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // 滑杆位置改变后要处理的动作 } });我暂时碰到的一些常用控件就是这些,当然别的控件也不是说不常用了,可能以后我会再进行更新维护,如果有什么建议和看法的话,欢迎给我留言。
下一次我们将学习一些复合控件,如ListView、GirdView等。