一、RelativeLayout介紹
RelativeLayout是Android提供的一種布局方式,其布局的方式比較靈活。RelativeLayout是按照控件間的相對位置進行布局,方便適應各種複雜的布局要求。通過使用不同的定位方式,我們可以讓控件的位置在左上角、中間、右下角等任意位置。除此之外,RelativeLayout還可以實現布局的高度自適應,可以為我們的開發帶來很多方便。
二、使用RelativeLayout實現布局
在RelativeLayout中,我們可以使用很多種方式來定位控件的位置。比如我們可以使用android:layout_alignParentTop、android:layout_alignParentBottom等屬性來定位控件在父布局的頂部或底部,還可以使用android:layout_above、android:layout_below等屬性來定位控件在其他控件的上面或下面。
舉個例子,如果我們想要實現一個頭像在左邊、名稱在右邊的布局,可以這樣實現:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/avatar"
android:layout_width="64dp"
android:layout_height="64dp"
android:src="@drawable/avatar"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" />
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="張三"
android:textSize="18sp"
android:layout_toRightOf="@id/avatar"
android:layout_alignBaseline="@id/avatar" />
</RelativeLayout>
上述代碼中,頭像控件的android:layout_alignParentLeft=”true”屬性和名稱控件的android:layout_toRightOf=”@id/avatar”屬性分別讓它們在左邊和右邊布局,而android:layout_alignBaseline=”@id/avatar”屬性則使得它們的底部對齊。在這個例子中,我們沒有直接指定布局的高度,而是使用了android:layout_height=”wrap_content”屬性,這樣布局就可以根據內部控件的高度自適應。
三、實現布局高度自適應
在上述例子中,我們已經使用了android:layout_height=”wrap_content”屬性來實現布局的高度自適應了。除此之外,RelativeLayout還提供了另外一個實現布局高度自適應的屬性:android:layout_alignParentBottom
如果我們想要實現一個類似微信聊天的布局,即發送消息在右邊,接收消息在左邊,我們可以這樣實現:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FFF"
android:padding="10dp"
android:text="你好,我是小明"
android:textSize="16sp"
android:layout_marginRight="80dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true" />
<LinearLayout
android:id="@+id/avater_group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true">
<ImageView
android:id="@+id/avatar"
android:layout_width="64dp"
android:layout_height="64dp"
android:src="@drawable/avatar" />
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="小明"
android:layout_gravity="center_horizontal" />
</LinearLayout>
</RelativeLayout>
上述代碼中,我們使用了android:layout_alignParentBottom=”true”屬性,使得TextView的底部與其父布局的底部對齊。在這種布局中,如果發送消息的TextView高度為100dp,而接收消息的TextView高度為200dp,RelativeLayout的布局高度會自適應為200dp。
四、總結
RelativeLayout是一種比較靈活的布局方式,可以通過各種方式來定位控件的位置。通過使用android:layout_height=”wrap_content”和android:layout_alignParentBottom=”true”屬性,我們可以很方便地實現布局的高度自適應。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/193222.html
微信掃一掃
支付寶掃一掃