一、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-tw/n/193222.html