2.2 View与ViewGroup
在Android SDK UI的核心控制中有android.view.View和android.view.ViewGroup两个主要类。View表示一个视图就是一般视觉上的一个区域;ViewGroup也是一个View,它扩展View使其内部能存放其他的View,可以理解为一个Container容器。ViewGroup内部采用跟Swing一样的处理机制,内部采用一个Layout Manager来管理它的布局,让用户能采用内置的布局进行视图控制。
在Android App中,所有的用户界面元素都是由View和ViewGroup的对象构成的。View是绘制在屏幕上的用户能与之交互的一个对象;而ViewGroup则是一个用于存放其他View和ViewGroup对象的布局容器。
App的用户界面上的每一个组件都是使用View和ViewGroup对象的层次结构来构成的,如图2-1所示。每个ViewGroup都是用于组织子View的容器,而它的子View可能是输入控件或者在UI上绘制了某块区域的小部件。有了层次树,就可以根据自己的需要,设计简单或者复杂的布局了。
图2-1 一个UI布局的层次结构示意图
无须全部用View和ViewGroup对象来创建UI布局,Android给我们提供了一些App控件和UI布局,只需要定义其内容即可。
(1)视图对象(View)。
在Android程序中View类是最基本的一个UI类,基本上所有高级的UI控件都继承这个类。一个View通常占用屏幕上的一个矩形区域,负责绘图及事件处理,并且可以设置该块区域是否可见,以及获取焦点等操作。View是所有窗体部件的基类,是为窗体部件服务的。这里的窗体部件即UI控件,例如一个按钮或文本框。Android提供了一系列的标准UI控件供我们直接使用,同时,我们也可以通过继承于View类或View的子类,来实现自定义的UI控件。
(2)视图容器对象(ViewGroup)。
ViewGroup是一个特殊的View类,它继承于android.view.View。一个ViewGroup对象是一个Android.view.ViewGroup的实例,它的功能就是装载和管理下一层的View对象和ViewGroup对象。一个ViewGroup也可以加入另一个ViewGroup当中。ViewGroup是布局管理器(Layout)及View容器的基类。ViewGroup中还定义了一个嵌套类ViewGroup. LayoutParams。这个类定义了一个显示对象的位置、大小等属性,View通过LayoutParams中的这些属性值来告诉父级容器它们将如何放置。
继承于ViewGroup的一些主要的布局类有RelativeLayout、LinearLayout、TableLayout、FrameLayout和AbsoluteLayout。