学习目标 本章主要介绍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. 2. 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. 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。 12. (3)打开src 目录下com.hisoft.activity 包下的ButtonActivity.java 文件,声明 Button,并获取引用,然后添加监听器,代码如下: