第 8 章 视图组(ViewGroup)和布局(Layout)的使用

在 Android 中视图组是集合若干个控件在一起的元素,ViewGroup 有两种用法,一种是像普通的控件一样使用(如网页视图、旋转按钮、文本切换器、图像切换器、单选按钮组等),另一种是作为布局容器使用(各种布局)。

8.1 Android的屏幕元素体系

在屏幕中控件的组织上,可以将各个视图(控件)组成一个视图组(ViewGroup),视图组是一个包含了其他视图的视图。

android.view.ViewGroup 扩展了 android.view.View,它本身也具有 View 的特性,区别仅在于它可以包含其他的控件。

ViewGroup 视图组具有一系列的扩展者:AdapterView、AbsoluteLayout、FrameLayout、LinearLayout、RelativeLayout、AdapterView

Android GUI 程序的屏幕体系结构的组织遵循以下原则:

  • 一个屏幕可以包含一个视图;
  • 视图组本身也是一个视图;
  • 视图组可以包含若干个视图。
    Android 视图和视图组的关系如图所示:
    在这里插入图片描述

如图所示,外部最大的框表示整个屏幕,其中包含一个视图组 ViewGroup0,ViewGroup0 包含 3 个子视图,即 View1、ViewGroup1、ViewGroup2ViewGroup1 本身也是视图组,以水平布局的方式包含了 View2 和 .View3;ViewGroup2 本身也是视图组,以垂直的方式包含了 View4ViewGroup3 和 ViewGroup4;ViewGroup4 本身也是视图组,以水平布局的方式包含了 View5 和 View6。

根据以上的原则,当屏幕需要包含多个视图时,必须组织在一个视图组中。由于视图组本身也是一个视图,因此视图组还可以包含视图组。在这里一个主要的限制是:在没有视图组的情况下,两个以上的视图(也包括视图组)是不能够并列的。

例如,在布局文件中,类似下面的写法是不可以的。

<?xml version="1.0" encoding="utf-8"?> 
 <Button android:id="@+id/button"/> 
 <EditText android:id="@+id/edit"/>

应该组织成以下的格式:

<?xml version="1.0" encoding="utf-8"?> 
 <ViewGroup> 
 <Button android:id="@+id/button"/> 
 <EditText android:id="@+id/edit"/> 
 </ViewGroup

其中的 ViewGroup 可以是 ViewGroup 类,或者是它的扩展者,可以将 ViewGroup 及其扩展者统称为ViewGroup。在 Android 中,有一些预置的 ViewGroup 可以直接像 View 一样使用(如 WebView),还有一些ViewGroup 本身没有功能,只是提供屏幕上的各种布局(如 AbsoluteLayout、FrameLayout 等)。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐