PAGE \* MERGEFORMAT30
android界面布局详解
我们这次深入分析Android应用程序的布局文件,主要内容如下:
1、用户界面及视图层次
2、Android中布局定义方法
3、编写XML布局文件及加载XML资源
4、常用布局文件中元素的属性
4.1、ID属性
4.2、布局参数
5、布局位置&大小&补距&边距
6、又是“Hello World!”
6.1、又是“Hello World!”(一)
6.2、又是“Hello World!”(二)
6.3、又是“Hello World!”(三)
1、用户界面及视图层次
在通过“Hello World!”介绍Android中的布局问题之前,不得不先介绍一下Android中的用户界面,因为布局问题也是用户界面问题之一。在一个Android应用程序中,用户界面通过View和ViewGroup对象构建。Android中有很多种Views和ViewGroups,他们都继承自View类。View对象是Android平台上表示用户界面的基本单元。
View类:
extends HYPERLINK "/oakpip/admin/file:/C:/Users/qq/AppData/Local/Temp/WindowsLiveWriter-148658618/supfiles1D2D9C4/Object.html" Object
implements HYPERLINK "/oakpip/admin/file:/C:/Users/qq/AppData/Local/Temp/WindowsLiveWriter-148658618/supfiles1D2D9C4/Drawable.Callback.html" Drawable.Callback HYPERLINK "/oakpip/admin/file:/C:/Users/qq/AppData/Local/Temp/WindowsLiveWriter-148658618/supfiles1D2D9C4/KeyEvent.Callback.html" KeyEvent.Callback HYPERLINK "/oakpip/admin/file:/C:/Users/qq/AppData/Local/Temp/WindowsLiveWriter-148658618/supfiles1D2D9C4/AccessibilityEventSource.html" AccessibilityEventSource
这个类表示用户界面组件的基本构建块,一个View占据屏幕上的一个矩形区域,并负责绘图和事件处理。View类是widgets的基类,widgets用于创建交互式UI组件(buttons、text fields等)。View类的直接子类ViewGroup类是layouts的基类,layouts是不可见的容器用户保持其他Views或者其他ViewGroups和定义它们的布局属性。
一个View对象是一个数据结构,它的属性存储屏幕上一个特定矩形区域的布局参数和内容。一个View对象处理它自己的测度、布局、绘图、焦点改变、滚动、键/手势等与屏幕上矩形区域的交互。作为用户界面中的对象,View也是与用户交互的一个点且交互事件接收器。
在Android平台上,你定义活动的UI使用的View和ViewGroup节点的层次结构如下图所示。根据你的需要这个层次树可以是简单的或复杂的,并且你能使用Android预定义的widgets和layouts集合,或者使用自定义的Views。
图1、视图层次结构
为了将视图层次树呈现到屏幕上,你的活动必须调用setContentView()方法并且传递到根节点对象的引用。Android系统接收这个引用并使用它来验证、测度、绘制树。层次的根节点要求它的孩子节点绘制它自己——相应地每个试图组节点要求调用自己的孩子视图去绘制他们自己。子视图可能在父视图中请求指定的大小和位置,但是父视图对象有最终决定权(子视图在哪个位置及多大)。因为它们是按序绘制的,如果元素有重叠的地方,重叠部分后面绘制的将在之前绘制的上面。
2、Android中布局定义方法
布局是一个活动中的用户界面的架构,它定义了布局结构且存储所有显示给用户的元素。有两种方式可以声明布局,这个我们在上文中已经用了(对应 HYPERLINK "/skynet/archive/2010/05/11/1732208.html" \t "_blank" 上文的“Hello World的手术(二)”、“Hello World的手术(三)”)。我们再重温总结一下:
方法一、在XML格式的布局文件中声明UI。Android提供了简易的XML词汇表对应视图类和其子类,诸