第3章 Android 控件 Android控件是UI的重要组成部分。常用的控件有:按钮控件Buton、ImageButon, 状态开关控件ToggleButon、Switch,单选多选按钮RadioButon、CheckBox,图片控件 ImageView,列表控件ListView,文本控件TextView、EditText,下拉控件Spinner,日期与时 间选择控件DatePicker、TimePicker。主要掌握这些控件的创建方法、类中的主要函数及事 件处理机制。 3.1 类层次关系 在讲述具体控件内容之前,熟悉一下Android中类层次关系是非常有必要的,主要包 括View与ViewGroup、ViewGroup与布局的关系等。 在Android知识体系中,View是所有UI视图的基类,ViewGroup是View的子类, 所以它也具有View的特性,但主要用来充当View的容器,将其中的View视作自己的 孩子,对它的子View进行管理。当然,它的孩子也可以是ViewGroup类型。ViewGroup(树根)和它的孩子(View和ViewGroup)以树形结构形成一个层次结构。View类有接 受和处理消息的功能,Android系统所产生的消息会在这些ViewGroup和View之间 传递。 所有布局类LinearLayout、RelativeLayout、TableLayout、GridLayout、FrameLayout 等都是ViewGroup的子类。 总之,View、ViewGroup、部分控件类、部分布局类的UML类图如图3-1所示。 View中常用的方法如下所示。 .ViwfneId(nd),这是Viw中最常用的方法,d值返回 eidViwByitie根据控件iView对象。一般来说,若进一步使用,需要将View强制转换成所需对象,形如 BunojBtofneId(d); tob=(un)idViwByi 第3章 Android控件59 图3-1 Android基本类层次UML框图 ViewGroup中常用的方法如下所示。 .voidaddView(Viewv),父容器添加一个子组件对象。 .voidremoveAlViews(),父容器删除所有子组件。 .voidremoveView(Viewv),父容器删除子组件v。 .intgetChildCount(),返回子组件数目。 .ResourcegetResources(),获取系统资源对象。 3.2 按钮控件 2.基本按钮Bto 3.1 un Buton是AndroidUI的重要元素,其常用方法如下所示。 .BtoCnetcx), cx是上下文对象。 un(otxt构造方法,t t(s),对应ad:t属性,s是字符串序列,设置 按钮文本内容。 .voidsetTexCharSequencecndroitexc t(d),d是字符串资源id,即原字符串定义在资源文件中。 .voidsetTexintresiresi e(e),对应ad:e属性,设置文本字体大小,浮 .voidsetTextSizfloatsizndroitextSiz 点数,单位是pxe 。 (t,e),设置文本字体大小,浮点数,单位由ut决 .voidsetTextSizintunifloatsizni 定。unit是系统类TypedValue中定义的静态常量:COMPLEX_UNIT_PX,整 数0,代表单位是px;COMPLEX_UNIT_DIP,整数1,代表单位是dp;COMPLEX _UNIT_SP,整数2,代表单位是sp。 .voidsetBackgroundColor(Colorc),对应android:background属性,设置背景 颜色。 60 Android 简明程序设计 . voidsetBackgroundResource(intresid),设置背景图片,resid是图片资源id。 . voidsetEnabled(booleanmark),对应android:enabled属性,按钮使能标志。 Button按钮常用的动作有:click,短时单击事件;longclick,长时单击事件;touch,触 摸事件。若对按钮事件进行响应,必须完成以下步骤:①注册事件;②实现事件接口,编 制响应函数。按钮事件常用的注册方法如下所示。 . voidsetOnClickListener(OnClickListenerl),注册click事件,响应方法写在实现 OnClickListener接口类中定义的方法中。 . voidsetOnLongClickListener(OnLongClickListenerl),注册longclick事件,响 应方法写在实现OnLongClickListener接口类中定义的方法中。 .voidsetOnTouchListener(OnTouchListenerl),注册click事件,响应方法写在实 现OnTouchListener接口类中定义的方法中。 【例3-1】 按钮事件响应示例:定义线性布局UI文件,一个“开始”按钮,一个 TextView组件。当单击“开始”按钮时,在TextView组件中显示“Hello”字符串。 ① UI配置文件main.xml。