佈局管理器——相對佈局

Yuan Jianzheng發表於2017-06-24

介紹

相對佈局由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>

相應地介面展示結果:

圖1


摘自《瘋狂Android講義》

相關文章