介绍
相对布局由RelativeLayout代表,相对布局容器内子组件的位置总是相对兄弟组件、父容器来决定。
如果A组件的位置是由B组件的位置来决定的,Android要求先定义B组件,再定义A组件。
为了控制该布局容器中各个子组件的布局分布,RealativeLayout提供了一个内部类:RelativeLayout.LayoutParams,该类提供了大量的XML属性来控制RelativeLayout布局容器中子组件的布局分布。
由于RelativeLayout.LayoutParams继承了android.view.ViewGroup.MarginLayoutParams,因也可以使用其父类所支持的各XML属性。
用例
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--定义该组件位于父容器中间-->
<TextView
android:id="@+id/view01"
android:layout_width="@android:dimen/notification_large_icon_height"
android:layout_height="@android:dimen/notification_large_icon_height"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:background="@drawable/leaf" />
<!--定义该组件位于view01组件上方-->
<TextView
android:id="@+id/view02"
android:layout_width="@android:dimen/notification_large_icon_height"
android:layout_height="@android:dimen/notification_large_icon_width"
android:layout_above="@+id/view01"
android:layout_alignLeft="@+id/view01"
android:background="@drawable/leaf" />
<!--定义该组件位于view01组件下方-->
<TextView
android:id="@+id/view03"
android:layout_width="@android:dimen/notification_large_icon_height"
android:layout_height="@android:dimen/notification_large_icon_width"
android:layout_alignLeft="@id/view01"
android:layout_below="@id/view01"
android:background="@drawable/leaf" />
<!--定义该组件位于view01组件的左侧-->
<TextView
android:id="@+id/view04"
android:layout_width="@android:dimen/notification_large_icon_height"
android:layout_height="@android:dimen/notification_large_icon_width"
android:layout_alignTop="@id/view01"
android:layout_toLeftOf="@id/view01"
android:background="@drawable/leaf" />
<!--定义该组件位于view01组件的右边-->
<TextView
android:id="@+id/view05"
android:layout_width="@android:dimen/notification_large_icon_width"
android:layout_height="@android:dimen/notification_large_icon_height"
android:layout_alignTop="@id/view01"
android:layout_toRightOf="@id/view01"
android:background="@drawable/leaf" />
</RelativeLayout>
</LinearLayout>
相应地界面展示结果:
摘自《疯狂Android讲义》