相对布局(RelativeLayout),容器内子组件的位置总是相对兄弟组件,父容器来决定的。因此称为相对布局。
如果A组件的位置是由B组件的位置来决定的,Android要先定义B组件,在定义A组件。RelativeLayout可支持两个XML属性:
XML属性 相关用法 说明
1. android:gravity setGravity(int) 设置该布局容器内部各子组件的对齐方式
2. android:ignoreGravity setIgnore Gravity(int) 设置那个组件不受gravity影响
为了控制该布局中各子组件的布局分布,RelativeLayout提供了一个内部类 RelativeLayout.LayoutParams,该类提供了大量的XML属性就不一一里出来了,
下来写一个有针对行的例子,做一个“梅花”布局效果的界面,代码:
View Code
1 <?xml version="1.0" encoding="utf-8"?>
2 <RelativeLayout android:layout_width="fill_parent"
3 android:layout_height="fill_parent" android:orientation="vertical"
4 xmlns:android="http://schemas.android.com/apk/res/android">
5
6 <!-- 定义该组件位于父容器中间 -->
7 <TextView
8 android:id="@+id/textview1"
9 android:layout_width="wrap_content"
10 android:layout_height="wrap_content"
11 android:background="@drawable/wbk"
12 android:layout_centerInParent="true"
13 />
14 <!-- 定义该组件位于textview1的上方 above ,alignLeft设置第二个以中间组件的左边对其 -->
15 <TextView
16 android:id="@+id/textview2"
17 android:layout_width="wrap_content"
18 android:layout_height="wrap_content"
19 android:background="@drawable/wbk"
20 android:layout_above="@id/textview1"
21 android:layout_alignLeft="@id/textview1"
22 />
23
24 <TextView
25 android:id="@+id/textview3"
26 android:layout_width="wrap_content"
27 android:layout_height="wrap_content"
28 android:background="@drawable/wbk"
29 android:layout_below="@id/textview1"
30 android:layout_alignLeft="@id/textview1"
31 />
32
33 <TextView
34 android:id="@+id/textview4"
35 android:layout_width="wrap_content"
36 android:layout_height="wrap_content"
37 android:background="@drawable/wbk"
38 android:layout_toLeftOf="@id/textview1"
39 android:layout_alignTop="@id/textview1"
40 />
41
42 <TextView
43 android:id="@+id/textview5"
44 android:layout_width="wrap_content"
45 android:layout_height="wrap_content"
46 android:background="@drawable/wbk"
47 android:layout_toRightOf="@id/textview1"
48 android:layout_alignTop="@id/textview1"
49 />
50
51
52 </RelativeLayout>
运行效果如下: