学习目标
本章主要介绍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文件中描述控件。
② 在程序中引用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.
8.
14.
21.
28.
39.
(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输入信息。
与上节所讲述的TextView一样,EditText控件的使用也有两种:一种是在程序中创
建控件的对象来使用EditText控件;另外一种是在res/layout文件下的XML文件中描述
控件,程序中使用EditText控件。例如:
(1)用XML描述一个EditView。
(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.
7.
11.
12.
16.
17.
(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。
(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 按钮时,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.
7.
12.
(3)打开src 目录下com.hisoft.activity 包下的ButtonActivity.java 文件,声明
Button,并获取引用,然后添加监听器,代码如下: