1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2019/1/7,#,Android,基础与应用开发教程,大连理工大学出版社,建立用户界面,和使用组件,第,6,章,6.1 Android,的用户界面,在,Android,中可以选用三种办法来组建用户界面,:,全部用,Java,代码来构建用户,界面,,在,XML,文中定义用户界面,把这两种办法结合起来使用,即在,XML,中定义用户,界面,,然后在代码中引用和修改它。为了具体阐明这点,我们组建一个分别使用上述三,种办法,的用户界面示例。为此,我们先定义一种命名法则。进行,UI,开发时,经常用到,视图,(,view
2、组件,(control),、小窗体,(widget),、容器,(container),和布局,(layout),等术语。,6.2 Android,的常用组件,文本框,组件是,Android,中用到的第一种组件。,Android,有一套完善的文本框组件,,它们,是,TextView,EditText,AutoCompleteTextView,和,MultiCompleteTextView,组件,。,6.2.1,文本框组件,TextView,6.2 Android,的常用组件,1.TextView,文本框组件,TextView,只能显示文本,不能编辑文本。但它与标签不同,,TextView,组
3、件,有一些重要,的属性。如,autoLink,属性设置到某,web URL,时,该组件就可查找和突显该,URL,且,当用户单击,TextView,时,系统将用该,URL,启动浏览器。实际上,,TextView,更,有意思,的应用来自,android.text.util.Linkify,类,Cz7,。该类可获取一段文本或正则表达式,,并转换,为可单击的链接文本,:,6.2.1,文本框组件,TextView,6.2 Android,的常用组件,2,.EditText,编辑框组件,EditText,是,TextView,的子类,它的文本可以被编辑,但用户一次只能给它输人,两段,文字。,EditTex
4、t,有许多属性,如,autoText,属性可纠正拼写错误,;capitalize,属性可,控制,单词或句子首字符大写,;phoneNumber,属性可接收指定的电话号码,;password,属性可设置默认的密码等。,EditText,组件的默认行为是显示一行文本,并可按需扩展其内容。换言之,如果,用户,输人超过一行,将会出现另一行。但是若将,singleLine,属性设置为,true,,用户就,只能输,人一行。,移动,设备的软件是帮助用户快速做决策。因此,希望加亮显示,EditText,的部分,内容,。可用静态或动态方式完成这种设置。静态设置是直接在,XML,文件内给字符串,添加,标记,:,6
5、2.1,文本框组件,TextView,6.2 Android,的常用组件,3,.AutoCompleteTextView,自动完成文本框组件,AutoCompleteTextView,组件,3,是具有自动完成功能的,TextView,。换言之,当,用户,给,TextView,输人文字时,该组件可给用户显示提示信息供选择,如下述代码所示,:,6.2.1,文本框组件,TextView,6.2 Android,的常用组件,4.MultiAutoCompleteTextView,多项自动完成文本框组件,6.2.1,文本框组件,TextView,6.2 Android,的常用组件,按钮,是窗口小部件,
6、widget,工具箱中最常用的组件之一。,Android,提供了一系列,典型,的按钮和一些附加部分,(extras),。本节讨论三种按钮组件,:,基本按钮、图像按钮和,开关按钮,。图,6-3,是它们的用户界面。顶部的按钮是基本按钮,中间的按钮是图像按钮,而,底部,的按钮是开关按钮。,6.2.2,按钮,组件,6.2 Android,的常用组件,1.,基本按钮组件,Button,Android,中的基本按钮类是,android,widget.Button,。其主要用途是处理单击,事件。,2,.,图像按钮组件,ImageButton,Android,通过,android.widget.ImageB
7、utton,类提供图像按钮。,3.,开关按钮组件,ToggleButton,ToggleButton,是一个两状态的按钮,即开,(On),状态和关,(Off),状态。,4.,复选框组件,CheckBox,几乎所有窗口小部件工具箱中都有复选框组件,5.,单选按钮组件,RadioButton,它,给用户提供多种选择,但只能,选取其中,一个项目,。,6.2.2,按钮,组件,6.2 Android,的常用组件,Android,SDK,提供了若干种,ListView,组件,其外貌如图,6-6,所示,它垂直显示,列表中,的项目。要使用,ListView,通常需要编程扩展,android.app.ListA
8、ctivity,类建立新,活动,。,ListActivity,类中包含,ListView,,并通过,setListAdapter(),方法为,ListView,设置,数据。,6.2.3,列表,组件,ListView,6.2 Android,的常用组件,GridView,也是大多数,窗,口小工具箱和,Android,中的组件,它用网格形式显示,数据,(,文本和图像等,),。,GridView,同样是在,XML,布局文件内定义,(,见代码,6-11,,然后,用,android,.,widget.ListAdapter,将数据绑定到网格上。,6.2.4,网格,组件,GridView,6.2 Andr
9、oid,的常用组件,1.DatePicker,和,TimePicker,组件,DatePicker,和,TimePicker,组件分别用于选择日期和时间。,6.2.5,日期,组件,Date,和时间组件,Time,6.2 Android,的常用组件,2,.AnalogClock,模拟时钟组件和,DigitalClock,数字时钟组件,Android,还提供了模拟时钟和数字时钟组件,AnalogClock,和,DigitalClock(,见,图,6-10,),。,6.2.5,日期,组件,Date,和时间组件,Time,6.3 Android,中其他,有趣的组件,迄今为止,我们所叙述的都是,Andr
10、oid,应用程序中最基本的组件。除它们之外,,,Android,还提供了其他有趣的组件。其中值得提及的有地图组件,MapView,、图片库,组件,Gallery,和下拉菜单组件,Spinner,。地图组件可显示地图,是,com.google.,android.maps,包内的,.MapView,类,使用起来比较复杂,我们将在,9.3,节地图服务中详细介绍,。,Gallery,组件和,Spinne:,组件类似于,list,组件,使用时先要获得对它们的引用,,然后调用,setAdapter(),方法写人数据,再对选中的事件注册,:,6.4 Android,布局管理器,为了,布置视图中各组成部分的位
11、置,,Android,提供了与视图容器行为相似的视图类,,即,所谓的布局,(layout),类或,布局管理器,(LayoutManager),接口。,其中每个都包含,具体,的类属来管理其子元素的大小和位置。例如,LinearLayout,类可依次水平或垂直,放置其,子元素。,Android SDK,中的布局管理器列于表,6-2,内。,6.4 Android,布局管理器,LinearLayout,是最常用的布局。这个布局管理器按其,orientation(,取向,),属性的值水平或垂直组织其子元素。下面是水平配置,LinearLayout,的代码,:,6.4.1,线性,布局管理器,LinearL
12、ayout,6.4 Android,布局管理器,1,.weight,和,gravity,布局,orientation,属性是,LinearLayout,布局管理器首要的属性。此外,还有决定其子,组件大小,和位置的属性,weight(,加权,),和,gravity(,重力,),。使用,weight,可确定容器内各,组件的,相对大小。假定容器内有三个组件,:,其加权分别为,1(,最大值,),0,n,和,0,。加权,为,1,的组件,将占满容器内空余的空间。,Gravity,本质上是对齐。例如,想要标签内的文本,右对齐,,可将其,gravity,设置为,right,。,6.4 Android,布局管理
13、器,1,.weight,和,gravity,布局,6.4 Android,布局管理器,2.android:gravity,和,android:layout_gravity,6.4 Android,布局管理器,使用,TableLayout,需要创建它的实例,并把,TableRow(,行,),元素放在其中。然后,表格,的各个组件再放在,TableRow,元素中,见代码,6-17,,其用户界面如图,6-13,所示。,6.4.2,表格,布局管理器,TableLayout,6.4 Android,布局管理器,另,一个重要的布局管理器是,RelativeLayout,。这个布局管理器的功能是让容器中,的组
14、件,参照容器中其他容器或组件进行布局,。,6.4.3,相对,布局管理器,RelativeLayout,6.4 Android,布局管理器,Android,还提供了一种指定组件在容器内精确位置的布局管理器,即所谓,的,AbsoluteLayout,6.4.4,绝对,布局管理器,AbsoluteLayout,6.4 Android,布局管理器,6.4.5,窗体,布局管理器,FrameLayout,6.5,适配器,适配器,(adapter),具有许多功能,通常它们可以更容易和更灵活地把数据绑定到,组件上,。,Android,中的适配器多用来扩展,android.widget.AdapterView,
15、窗口小工具。,可用来,扩展,AdapterView,的类有,ListView,GridView,Spinner,和,Gallery(,见图,6-20,),AdapterView,本身实际上是,android.widget.ViewGroup,的扩展,因此,ListView,GridView,等都是容器组件,它们可显示子组件的集合。,6.5,适配器,6.5.1,简单,游标适配器,SimpleCursorAdapter,6.5,适配器,ArrayAdapter,类是,Android,中最简单的适配器,它是专为列表组件设计的,,并用,TextView,组件来显示列表项目。下面是通常创建,ArrayA
16、dapter,对象的例子,:,6.5.2,数组,适配器,ArrayAdapter,6.5,适配器,Android,中的适配器很容易使用,但有一定的局限性。为了克服这个缺陷,,Android,提供,了一个抽象基类,BaseAdapter,,可以扩展它来定制适配器。实际上,SDK,内的所有,适配器,都是它的扩展。因此,如果想用扩展的适配器,可考虑在下述适配器中选择,:,(,1)ArrayAdapterT:,它是建立在任意对象的通用数组上的适配器,与,ListView,一同,使用。,(2),CursorAdapter:,它通过游标给列表提供数据,也在,ListView,内使用。,(3),Simple
17、Adapter:,简单的适配器,一般将静态数据,(,可来自资源文件,),填人列表。,(4),ResourceCursorAdapter:,它是,CursorAdapter,的扩展,可自动从资源创建视图。,(,5)SimpleCursorAdapter:,它是,ResourceCursorAdapter,的扩展,从游标的列,创建,TextView,或,ImageView,视图。这些视图需在资源中有定义。,6.5.3,创建,定制的适配器,6.6,本章,小结,本章,详细介绍了,Android,的用户界面,(UI,和其中使用的各种组件,(,用类描述,),。,接着,介绍了与使用这些组件有关的各种布局管资源的定义办法。最后,介绍了将数据,填充到,textView,组件中的一种简便的工具,即适配器。据此,一旦给定了对屏幕显示的,要求,,我们就能够较快地选择合适的组件和布局管理器来构建屏幕,并可使用,HierarchyViewer,工具来优化和调试应用程序,视图,。,感谢观看,






