2.3 Android控件详解

学习完Android的布局方式以后,要进行UI界面的设计,还需要熟练掌握各种控件的应用。开始一个界面的设计都是先创建容器,然后不断地向容器中添加组件,最后形成一个UI界面。掌握这些基本用户界面组件是学好Android编程的基础。接下来将详细介绍各个组件的使用方法。

2.3.1 TextView

TextView(文本框)直接继承了View,它还是EditText和Button两个UI组件类的父类。TextView的作用就是在界面上显示文字,通过在布局文件中或者在Activity中修改文字的内容。下面将通过具体的例子讲解TextView的使用,如图2-10所示。

图2-10 TextView组件

上述代码中放置了一个TextView组件,设置了文本的宽高都为适配内容,通过textColor设置了字体颜色,textSize设置了字体的大小,gravity设置了字体居中显示,更多的属性可以查看Android开发文档。

2.3.2 EditText

EditText(输入框)与TextView非常相似,许多XML属性都能共用,与TextView的最大区别就是EditText能够接受用户的输入。EditText的重要属性就是inputType,该属性相当于HTML的<input…/>元素的type属性,用于将EditText设置为指定类型的输入组件,如手机号、密码、日期等。还有一个属性是提示用户当前文本框要输入的内容是什么,使用android:hint=""来提示用户,当用户单击文本框时这些文字就会消失。下面将通过具体的实例来介绍EditText的使用过程,如图2-11所示。

图2-11 EditText组件

图2-11所示界面的代码如下:

上述代码通过android:inputType属性来设置输入的类型,通过android:hint属性提示用户当前文本框该输入什么内容。

EditText还可以通过自定义样式的方式来修改组件样式,自定义样式修改结果如图2-12所示。

图2-12 自定义EditText样式

图2-12自定义样式实现代码如下:

2.3.3 Button

Button(按钮)继承了TextView,它主要是UI界面上生成的一个按钮,用户可以单击按钮,并且能为按钮添加onClick事件即单击事件。按钮使用起来相对容易,可以通过android:background为按钮设置背景或者自定义样式,Button的xml属性和TextView相似,大多数属性能够共用。下面将通过具体的实例讲解Button的使用。普通Button以及自定义Button如图2-13所示。

实现图2-13的界面样式的具体代码如下:

图2-13 Button组件

上述是Button组件在布局文件的定义,需要掌握并熟练,关于Button组件的单击事件在第3章中会做详细介绍。

2.3.4 ImageView

ImageView(图像视图)继承自View组件,它的主要功能是用于显示图片,除此之外,ImageView还派生了ImageButton、ZoomButton等组件,因此ImageView支持的XML属性和方法,基本上也可以应用于ImageButton、ZoomButton等组件。下面将通过具体的例子显示ImageView最基本的使用,如图2-14所示。

图2-14 ImageView(左)和ImageButton(右)

图2-14所示界面的具体代码如下所示:

上述代码介绍了ImageView和ImageButton组件在XML文件中的基本定义使用,通过android:src设置ImageView的图片来源和ImageButton的背景。除此之外,ImageView和ImageButton也能添加单击事件,这些在以后章节的学习中会详细介绍。

2.3.5 RadioButton和CheckBox

RadioButton(单选按钮)和CheckBox(复选框)是用户界面中最普通的UI组件,它们都继承自Button类,因此可以直接使用Button支持的各种属性和方法。

RadioButton和CheckBox都多了一个可选中的功能,因此可以额外指定一个android:checked属性,用于指定RadioButton和CheckButton初始时是否被选中。

RadioButton和CheckBox的不同之处在于,一组RadioButton只能选中其中一个,因此RadioButton通常要和RadioGroup一起使用,用于定义一组单选按钮。

下面将通过具体的实例来学习RadioButton和CheckBox使用,实现效果如图2-15所示。

图2-15 RadioButton(左)和CheckBox(右)

如图2-15所示的单选按钮和复选框的实现代码如下:

上述代码定义了一个RadioGroup,其中包含了两个RadioButton,然后使用android:checked属性来设置“男”默认选中,接下来又定义了4个复选框,同样使用android:checked来选中“读书”和“听音乐”。对这些组件同样可以添加事件处理,例如选中以后改变事件处理等,具体会在以后的章节介绍。

2.3.6 ProgressBar

ProgressBar(进度条)也是一种重要的组件,ProgressBar本身代表了进度条组件,它还派生了两个常用的组件:seekBar和RatingBar。ProgressBar及其子类十分相似,只是在显示上有一定的区别。ProgressBar支持的常用属性如表2-3所示。

表2-3 ProgressBar常用属性

进度条通常用于向用户显示某个耗时操作完成的百分比。进度条可以动态地显示进度,因此避免了长时间地执行某个耗时操作时,让用户感觉程序失去了响应,从而带给用户更好的体验。

Android支持多种风格的进度条,通过style属性可以为ProgressBar指定风格,该属性支持的属性值如表2-4所示。

表2-4 style属性的属性值

所以在设计UI用户界面的时候,用户可以根据需要选择水平进度条或者环形进度条,也可以根据需要自定义适合项目需要的进度条。ProgressBar提供了两种方法来操作进度:一种是setProgress(int)来设置进度的完成百分比,另一种是incrementProgressBy(int)设置进度条增加或减少。当参数为正时,进度增加,反之相反。下面将通过具体的实例学习进度条的使用,如图2-16所示。

如图2-16所示界面的布局实现代码如下:

图2-16 环形进度条(左)与水平进度条(右)

从上面的代码中,可以看到使用了线性垂直布局,界面中放了两个进度条,分别为环形进度条和水平进度条。可以看到,代码中使用了style属性来设置进度条的样式。除此之外,还可以通过设置android:background设置进度条的背景颜色或者自定义布局文件,同前面讲述的Button和EditText自定义样式使用方式相同,只需要修改颜色等属性搭配布局即可使用。关于ProgressBar的使用方式,后续会结合具体的案例进行讲解。

2.3.7 SeekBar

拖动条与进度条非常相似,只是进度条采用颜色填充来表示进度完成的程度,而拖动条则通过滑块的位置来标识数字。拖动条允许用户拖动滑块来改变值,因此拖动条通常用于对系统的某种数值进行调节,比如音量调节等。

由于拖动条继承了进度条,因此进度条所支持的XML属性和方法同样适用于拖动条。进度条允许用户改变拖动条的滑块外观,改变滑块外观通过android:thumb属性来指定,这个属性指定一个Drawable对象,该对象将作为自定义滑块。为了让程序能够响应拖动条滑块位置的改变,程序可以为它绑定一个OnSeekBarChangeListener监听器。下面将通过具体的实例讲解SeekBar(拖动条)的使用,如图2-17所示。

如图2-17所示SeekBar的界面布局实现代码如下:

图2-17 SeekBar组件

从上述代码可以看出,使用了线性布局,并在当中加入了一个拖动条,通过android:backgroud属性设置了拖动条的背景样式,关于拖动条的拖动事件在后续章节中将会通过具体的项目案例进行讲解。

上面几小节介绍了TextView、EditText、Button、ImageView、RadioButton、CheckBox、ProgressBar以及SeekBar的基本用法,讲述了如何在布局文件中定义以及如何自定义样式等。关于组件的单击事件等会在后续章节详细讲解。