学习目标

本章主要介绍AndroidUI系统控件中文本控件
TextView、EditText,按钮控件Buton、图片按钮控件
ImageButon、单选按钮RadioButon、复选按钮CheckBox、
时间选择器TimePicker、日期选择器DatePicker、图片控件
ImageView、模拟时钟AnalogClock和数字时钟DiditalClock。
读者通过本章的学习,能够深入了解AndroidUI系统控件, 
掌握以下知识要点。

(1)掌握文本控件TextView、EditText的类继承结
构、属性及方法、应用。
(2)掌握按钮控件Buton、图片按钮控件ImageButon 
的通常用法及属性。
(3)掌握单选按钮RadioButon、复选按钮CheckBox 
的常用方法、引用处理及属性方法设置。
(4)掌握时间选择器TimePicker、日期选择器
DatePicker的使用方法及常用属性设置。
(5)掌握图片控件ImageView的常用方法、引用处理
及属性方法设置。
(6)熟悉模拟时钟AnalogClock和数字时钟DiditalClock 
的常用方法。
Android系统提供了许多控件给开发者使用,开发者
通过对这些控件编码及控件组合实现系统设计和功能开
发。Android系统的界面控件分为定制控件和系统控件, 
系统控件是Android系统提供给用户已经封装的界面控
件,是在应用程序开发过程中的常见功能控件。系统控件
更有利于帮助用户进行快速开发,同时能够使开发者在使
用Android系统进行开发的过程中,保持应用程序的界面
一致性。

第
5 
章


系统控件基础


Android应用开发案例教程(第2版) 
13 0 
在开发应用中,经常使用的系统控件有TextView、EditText、Button、ImageButton、
Checkbox、RadioButton、Spinner、ListView和TabHost等。
AndroidUI系统控件的使用,除了传统的程序代码中直接声明、创建之外,最能体现
其设计思想的是,采用XML文件来描述控件,在XML中可以描述控件的宽度、长度、控件
上的文本、控件的背景、控件的填充、设置源等。
5.1 文本控件简介
在Android系统中,文本控件包含TextView 和EditText控件,它们都继承自android. 
view.View,在android.widget包中。下面就文本控件的属性及使用方法进行详述。
5.1.1 文本框TextView 
android.widget包中的TextView是文本表示控件,一般用来文本展示,是一种用于显
示字符串的控件。主要功能是向用户展示文本的内容,可以作为应用程序的标签或者邮件
正文的显示,默认情况下不允许用户直接编辑。
在程序设计和开发中,使用TextView可以采用的方式有两种,如下所示。
(1)在程序中创建控件的对象来使用TextView控件。
如TextView控件,可以通过编写如下代码完成控件使用。 
TextView tv=new TextView(this); 
tv.setText("大家好"); 
setContentView(tv); 
(2)使用XML描述控件,并在程序中引用和使用。
① 在res/layout文件下的XML文件中描述控件。 
<TextView 
Android:id="@+id/text_view" 
Android:layout_width="fill_parent" 
Android:layout_height="wrap_content" 
Android:textSize="16sp" 
Android:padding="10dip" 
Android:background="#00f0d0" 
Android:text="大家好,这里是TextView"/> 
② 在程序中引用XML描述的TextView。 
TextView text_view = (TextView) findViewById(R.id.text_view); 
上述两种方式的使用,各有优缺点,根据不同的需要,采用相应的方法。相比而言,采
用第二种方法更好,其主要优势有:一是方便代码的维护;二是编码灵活;三是利于分工
协作。
TextView控件常用方法有getText()和setText()。TextView 控件有着与之相应的
属性,通过选择不同的属性,给予其值,能够实现不同的效果。TextView 控件属性的设置

第 
5 
章AndroidUI系统控件基础

既可以在XML文件中通过属性名称设定赋值,也可以采用对应的方法,在程序代码中设
定。其常用属性及对应方法如表5-1所示。

表5-
1 
TextView 
控件常用XML属性及对应方法

属性名称对应方法说明
android:text setText(CharSequence) 设置TextView控件文字显示
android:autoLink setAutoLinkMask(int) 
设置是否当文本为URL链接/Email/电话
号码/Map时,文本显示为可点击的链接。
可选值:none/web/email/phone/map/al 
android:hint setHint(int) 当TextView中显示的内容为空时,显示该
文本
android:textColor setTextColor(ColorStateList) 设置字体颜色
android:textSize setTextSize(float) 设置字体大小
android:typeface setTypeface(Typeface) 
设置文本字体,必须是以下常量值之一: 
normal0,sans1,serif2,monospace(等宽
字体)3 
android:elipsize setElipsize(TextUtils.TruncateAt) 
如果设置了该属性,当TextView中要显示
的内容超过了TextView的长度时,会对内
容进行省略。可取的值有start、middle、
end和marque 
android:gravity setGravity(int) 定义TextView在
x 
轴和
y 
轴方向上的显
示方式
android:height setHeight(int) 设置文本区域的高度,支持度量单位:px 
(像素)/dp/sp/in/mm(毫米) 
android:minHeight setMinHeight(int) 设置文本区域的最小高度
android:maxHeight setMaxHeight(int) 设置文本区域的最大高度
android:width setWidth(int) 设置文本区域的宽度,支持度量单位:px 
(像素)/dp/sp/in/mm(毫米) 
android:minWidth setMinWidth(int) 设置文本区域的最小宽度
android:maxWidth setMaxWidth(int) 设置文本区域的最大宽度

5.1.2 
TextView 
应用案例
本节在上述TextView控件讲解的基础上,通过案例熟悉TextView控件的属性和用
法,具体步骤如下。

(1)创建一个新的Android工程,工程名为TextViewDemo,目标API选择28,应用程
序名为TextViewDemo,包名为com.hisoft.activity,创建的Activity 的名字为
TextViewActivity,最小SDK版本根据选择的目标API会自动添加为17,创建后的项目工
程如图5-1所示。
es→lyuctvitman.
(2)打开项目工程中raot目录下的aiy_ixml文件,设置线性布局,添
加4个TextView控件,并设置属性,代码如下: 

Android应用开发案例教程(第2版) 
13 2 
图5-1 TextViewDemo 工程目录结构 
1. <? xml version="1.0" encoding="utf-8"? > 
2. <? xml version="1.0" encoding="utf-8"? > 
3. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
4. android:orientation="vertical" 
5. android:layout_width="fill_parent" 
6. android:layout_height="fill_parent" 
7. > 
8. <TextView 
9. android:layout_width="fill_parent" 
10. android:layout_height="wrap_content" 
11. android:text="字体大小为14 的文本" 
12. android:textSize="14pt" 
13. /> 
14. <TextView 
15. android:layout_width="fill_parent" 
16. android:layout_height="wrap_content" 
17. android:singleLine="true" 
18. android:text="TextView 示例" 
19. android:ellipsize="middle" 
20. /> 
21. <TextView 
22. android:layout_width="fill_parent" 
23. android:layout_height="wrap_content"

第 5 章 AndroidUI系统控件基础
13 3 
24. android:singleLine="true" 
25. android:text="访问:http://www.zxxxx.cn" 
26. android:autoLink="web" 
27. /> 
28. <TextView 
29. android:layout_width="fill_parent" 
30. android:layout_height="wrap_content" 
31. android:text="红色并带阴影的文本" 
32. android:shadowColor="#0000ff" 
33. android:shadowDx="15.0" 
34. android:shadowDy="20.0" 
35. android:shadowRadius="45.0" 
36. android:textColor="#ff0000" 
37. android:textSize="20pt" 
38. /> 
39. </LinearLayout> 
(3)src目录下com.hisoft.activity包下的TextViewActivity.java文件和res→values 
目录下strings.xml文件,都暂不做修改。部署运行项目工程,项目运行结果如图5-2所示。
图5-2 TextViewDemo 运行结果
5.1.3 编辑框EditText 
EditText控件继承自android.widget.TextView,在android.widget包中。EditText 
为输入框,是编辑文本控件,主要功能是让用户输入文本的内容。它是可以编辑的,是用来
输入和编辑字符串的控件。
利用控件EditText不仅可以实现输入信息,还可以根据需要对输入信息进行限制约
束。如:限制控件EditText输入信息。 
<EditText 
android:layout_width="fill_parent" 
android:layout_height="wrap_content"

Android应用开发案例教程(第2版) 
13 4 
android:inputType="numeber"/> 
与上节所讲述的TextView一样,EditText控件的使用也有两种:一种是在程序中创
建控件的对象来使用EditText控件;另外一种是在res/layout文件下的XML文件中描述
控件,程序中使用EditText控件。例如: 
(1)用XML描述一个EditView。 
<EditText Android:id="@+id/edit_text" 
Android:layout_width="fill_parent" 
Android:layout_height="wrap_content" 
Android:text="这里可以输入文字" /> 
(2)在程序中引用XML描述的EditText。 
EditText editText = (EditText) findViewById(R.id.editText); 
EditText常用方法:getText(),它也有与之相应的属性,通过选择不同的属性,给予
其值,能够实现不同的效果。其常用属性及对应方法如表5-2所示。
表5-2 EditText控件常用XML属性及对应方法
属性名称对应方法说 明
android:hint 输入框的提示文字
android:password setTransformationMethod 
(TransformationMethod) 
设置文本框中的内容是否显示为密
码,当为true时,以小点“.”显示文本
android:phoneNumber setKeyListener(KeyListner) 设置文本框中的内容只能是电话号
码,当为true时,表示电话框
android:digits setKeyListener(KeyListener),可
使用此方法监听键盘来实现
设置允许输入哪些字符。如: 
1234567890.+-*/%\n() 
android:numeric setKeyListener(KeyListener),可
使用此方法监听键盘来实现
设置只能输入数字,并且置顶可输入
的数字格式,可选值有:Integer(正整
数)、signed(整数,可带负号)、decimal 
(浮点数) 
android:singleLine setTransformationMethod 
(TransformationMethod) 设置文本框的单行模式
android:maxLenght setFilters(InputFilter) 设置最大显示长度
android:cursorVisible setCursorVisible(boolean) 设置光标是否可见,默认为可见
android:lines setLines(int) 通过设置固定的行数来决定EditText 
的高度
android:maxLines setMaxLines(int) 设置最大的行数
android:minLines setMinLines(int) 设置最小的行数
android:scrollHorizontally setHorizontallyScrolling(boolean) 设置文本框是否可以进行水平滚动
android:selectAllOnFocus setSelectAllOnFocus(boolean) 如果文本内容可选中,当文本框获得
焦点时自动选中全部文本内容

续表
第 5 章 AndroidUI系统控件基础
13 5 
属性名称对应方法说 明
android:shadowColor setShadowLayer(float,float, 
float,int) 
为文本框设置指定颜色的阴影,需要
与shadowRadius一起使用
android:shadowDx setShadowLayer(float,float, 
float,int) 
设置阴影横向坐标开始位置,为浮
点数
android:shadowDy setShadowLayer(float,float, 
float,int) 
设置阴影纵向坐标开始位置,为浮
点数
android:shadowRadius setShadowLayer(float,float, 
float,int) 为文本框设置阴影的半径,为浮点数
5.1.4 EditText应用案例
在上述EditText控件讲解的基础上,通过案例熟悉EditText控件的属性和用法,具体
步骤如下。
(1)创建一个新的Android工程,工程名为EditTextDemo,目标API选择28,应用程
序名为EditTextDemo,包名为com.hisoft.activity,创建的Activity 的名字为
EditTextActivity,最小SDK版本根据选择的目标API会自动添加为17,创建后的项目工
程如图5-3所示。
图5-3 EditTextDemo 工程目录结构
(2)打开项目工程中res→layout目录下activity_main.xml文件,设置线性布局,添加
1个TextView控件和1个EditText控件,并设置相关属性,代码如下: 
1. <? xml version="1.0" encoding="utf-8"? > 
2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
3. android:orientation="vertical" 
4. android:layout_width="fill_parent"

Android应用开发案例教程(第2版) 
13 6 
5. android:layout_height="fill_parent" 
6. > 
7. <TextView android:text="请输入:" 
8. android:id="@+id/textView1" 
9. android:layout_width="wrap_content" 
10. android:layout_height="wrap_content"> 
11. </TextView> 
12. <EditText android:layout_height="wrap_content" 
13. android:layout_width="match_parent" 
14. android:id="@+id/editText1" 
15. android:hint="这里键入输入内容"> 
16. <requestFocus></requestFocus> 
17. </EditText> 
(3)src目录下com.hisoft.activity包下的EditTextActivity.java文件和res→values 
目录下strings.xml文件,都暂不做修改。部署运行项目工程,项目运行结果如图5-4所示。
图5-4 EditTextDemo 运行结果
5.2 按钮控件简介
5.2.1 按钮Button 
Button是一种常用的按钮控件,继承自android.widget.TextView,在android.widget 
包中。如图5-5所示,用户能够在该控件上点击,然后引发相应的事件处理函数。
图5-5 Button 类继承图
它的常用子类有CheckBox、RadioButton、ToggleButton 
等,在后续章节会讲到。
Button按钮控件的通常用法如下。
在程序中通过super.findViewById(id)得到在layout中XML 
文件中声明的Button 的引用,然后使用setOnClickListener 
(View.OnClickListener)添加监听,再在View.OnClickListener监听器中使用v.equals 
(View)方法判断是哪一个按钮被按下,调用不同方法进行分别处理。具体如下。
(1)用XML描述一个Button。 
<Button Android:id="@+id/button"

第 5 章 AndroidUI系统控件基础
13 7 
Android:layout_width="wrap_content" 
Android:layout_height="wrap_content" 
Android:text="这是一个button" /> 
(2)在程序代码中引用用XML描述的Button。 
Button button = (Button) findViewById(R.id.button); 
(3)给Button设置事件响应。 
button.setOnClickListener(button_listener); 
(4)生成一个按钮事件监听器。 
private Button.OnClickListener button_listener = new 
Button.OnClickListener() { 
public void onClick(View v) { 
switch(v.getId()){ 
case R.id.Button: 
textView.setText("Button 按钮1"); 
return; 
case R.id.Button01: 
textView.setText("Button 按钮2"); 
return; 
} 
} }; 
此外,也可以采用在layout中XML 文件中声明分配一个方法给Button,使用
android:onClick属性,如: 
1. <Button 
2. android:layout_height="wrap_content" 
3. android:layout_width="wrap_content" 
4. android:text="@string/self_destruct" 
5. android:onClick="selfDestruct" /> 
当用户单击Button 按钮时,Android 系统会自动调用Activity 中的selfDestruct 
(View)方法,但selfDestruct(View)方法必须声明为public,并只能接受View 作为其唯一
的参数。传递给这个方法的View是被点击的控件的一个引用,如下: 
1. public void selfDestruct(View view) { 
2. //Kabloey 
3. } 
5.2.2 Button应用案例
在开发应用中,Button的使用较为常见,下面通过一个点击Button修改标题的案例来

Android应用开发案例教程(第2版) 
13 8 
介绍Button的应用。具体步骤如下。
(1)创建一个新的Android工程,工程名为ButtonDemo,目标API选择28,应用程
序名为ButtonDemo,包名为com.hisoft.activity,创建的Activity 的名字为
ButtonActivity,最小SDK 版本根据选择的目标API会自动添加为17,创建后的项目
工程如图5-6所示。
图5-6 ButtonDemo 工程目录结构
(2)打开项目工程中res→layout目录下activity_main.xml文件,设置线性布局,添加
1个Button控件,并设置相关属性,代码如下所示: 
1. <? xml version="1.0" encoding="utf-8"? > 
2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
3. android:orientation="vertical" 
4. android:layout_width="fill_parent" 
5. android:layout_height="fill_parent" 
6. > 
7. <Button android:text="按钮1" 
8. android:id="@+id/button1" 
9. android:layout_width="wrap_content" 
10. android:layout_height="wrap_content"> 
11. </Button> 
12. </LinearLayout> 
(3)打开src 目录下com.hisoft.activity 包下的ButtonActivity.java 文件,声明
Button,并获取引用,然后添加监听器,代码如下: