表3.2 FrameLayout支持的常用XML属性
XML属性 描 述
android:foreground 设置该帧布局容器的前景图像
android:foregroundGravity 定义绘制前景图像的gravity属性,即前景图像显示的位置
下面给出一个在程序中使用帧布局的实例。
例3.7 在Eclipse中创建Android项目,名称为3.7,应用帧布局居中显示层叠的正方形。(实例位置:光盘\TM\sl\3\3.7)
修改新建项目的res\layout目录下的布局文件main.xml,将默认添加的布局代码删除,然后添加一个FrameLayout帧布局管理器,并且为其设置背景和前景,以及前景图像显示的位置,最后在该布局管理器中添加3个居中显示的TextView组件,并且为其指定不同的颜色和大小,以更好地体现层叠效果。修改后的代码如下:
android:id="@+id/frameLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android/apk/res/android"
android:background="@drawable/background"
android:foreground="@drawable/icon"
android:foregroundGravity="bottom|right"
>
android:id="@+id/textView1"
android:background="#FFFF0000"
android:layout_gravity="center"
android:layout_width="400px"
android:layout_height="400px"/>
android:id="@+id/textView2"
android:layout_width="300px"
android:layout_height="300px"
android:background="#FFFF6600"
android:layout_gravity="center"
/>
android:id="@+id/textView3"
android:layout_width="200px"
android:layout_height="200px"
android:background="#FFFFEE00"
android:layout_gravity="center"
/>
运行本实例,将显示如图3.11所示的运行结果。
图3.11 应用帧布局居中显示层叠的正方形
说明: 帧布局经常应用在游戏开发中,用于显示自定义的视图。例如,在3.1.4节的例3.4中,实现跟随手指的小兔子时就应用了帧布局。
3.2.4 相对布局
相对布局是指按照组件之间的相对位置来进行布局,如某个组件在另一个组件的左边、右边、上方或下方等。
在Android中,可以在XML布局文件中定义相对布局管理器,也可以使用Java代码来创建。推荐使用前者。在XML布局文件中定义相对布局管理器可以使用
属性列表
>
RelativeLayout支持的常用XML属性如表3.3所示。
表3.3 RelativeLayout支持的常用XML属性
XML属性 描 述
android:gravity 用于设置布局管理器中各子组件的对齐方式
android:ignoreGravity 用于指定哪个组件不受gravity属性的影响
在相对布局管理器中,只有上面介绍的两个属性是不够的,为了更好地控制该布局管理器中各子组件的布局分布,RelativeLayout提供了一个内部类RelativeLayout.LayoutParams,通过该类提供的大量XML属性,可以很好地控制相对布局管理器中各组件的分布方式。RelativeLayout.LayoutParams支持的XML属性如表3.4所示。
表3.4 RelativeLayout.LayoutParams支持的常用XML属性
XML属性 描 述
android:layout_above 其属性值为其他UI组件的id属性,用于指定该组件位于哪个组件的上方
android:layout_alignBottom 其属性值为其他UI组件的id属性,用于指定该组件与哪个组件的下边界对齐
android:layout_alignLeft 其属性值为其他UI组件的id属性,用于指定该组件与哪个组件的左边界对齐
android:layout_alignParentBottom 其属性值为boolean值,用于指定该组件是否与布局管理器底端对齐
android:layout_alignParentLeft 其属性值为boolean值,用于指定该组件是否与布局管理器左边对齐
android:layout_alignParentRight 其属性值为boolean值,用于指定该组件是否与布局管理器右边对齐
android:layout_alignParentTop 其属性值为boolean值,用于指定该组件是否与布局管理器顶端对齐
android:layout_alignRight 其属性值为其他UI组件的id属性,用于指定该组件与哪个组件的右边界对齐
android:layout_alignTop 其属性值为其他UI组件的id属性,用于指定该组件与哪个组件的上边界对齐
android:layout_below 其属性值为其他UI组件的id属性,用于指定该组件位于哪个组件的下方
android:layout_centerHorizontal 其属性值为boolean值,用于指定该组件是否位于布局管理器水平居中的位置