Sử dụng RelativeLayout trong Android

RelativeLayout là layout mà những View con được xác lập vị trí bởi những mối liên hệ với View cha hoặc với View con như View con nằm dưới một View con khác, View con căn thẳng lề phải với View cha …

RelativeLayout

RelativeLayout là layout mà nó hiện thị các view con nó chứa ở các vị trí trong mối liên hệ của chúng với nhau (như View con này nằm dưới một View con khác, View con này nằm bên trái một View con khác …), kể cả mối liên hệ của chúng với chính phần tử cha RelativeLayout (như căn thẳng theo cạnh đấy của phần tử cha, nằm giữa phần tử cha, nằm bên trái phần tử cha …).

RelativeLayout là một layout hết sức mạnh mẽ về độ tiện lợi và hiệu quả, nếu giao diện không ở mức quá phức tạp việc chọn RelativeLayout mạng lại hiệu suất còn tốt hơn ConstraintLayout. RelativeLayout dùng khi đơn giản, ConstraintLayout khi giao diện phức tạp.

Định vị và mối liên hệ các View con trong RelativeLayout

Định vị mặc định

Khi các View con đưa vào RelativeLayout nếu chưa có thiết lập mối liên hệ qua lại nào với phần tử cha hay với phần tử View con khác thì nó sẽ được định vị ở góc trên – trái của RelativeLayout. Như trường hợp dưới đây cả 3 View con không có thiết lập mối liên hệ nào, nên nó đều định vị ở góc trên / trái và vẽ chồng nên nhau, View con nào xếp sẽ ở lớp trên của màn hình.




    

    
    

android:gravity và android:ignoreGravity của RelativeLayout

Các View con khi đã định vị xong trong RelativeLayout, giả sử coi như tất cả các View con nằm vừa trong một đường biên chữ nhật, thì cả khối các View con này có thể dịch chuyển tới những vị trí nhất định trong RelativeLayout bằng thuộc tính: android:gravity, nó nhận các giá trị (có thể tổ hợp lại với ký hiệu | giống với LinearLayout)

Giá trị Ý nghĩa
center Căn ở giữa
top Ở phần trên
bottom Phần dưới
center_horizontal Ở giữa theo chiều ngang
center_vertical Ở giữa theo chiều đứng
left Theo cạnh trái
right Theo cạnh phải
bottom Cạnh dưới

Hình dưới là ví dụ, thiết lập android:gravity=”center|right”



    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="8dp"
    android:gravity="center|right"
    android:background="#e2e3eb">

    

RelativeLayout có hỗ trợ chỉ ra một View con tách khỏi khối biên chữ nhật chứa các View con để phần tử đó không bị ảnh hưởng bởi gravity bằn thuộc tính
android:ignoreGravity="id-view-con"

Ví dụ sau đã tách phần tử TextView có id: textview khỏi ảnh hưởng của gravity của RelativeLayout



    
    

    
    

Định vị View con bằng liên hệ với View cha RelativeLayout

Vị trí của View con trong RelativeLayout hoàn toàn có thể thiết lập bằng cách chỉ ra mối liên hệ vị trí với view cha như căn thẳng cạnh trái View cha với View con, căn thẳng cạnh phải View cha với View con ... Các thuộc tính triển khai tính năng này như sau

Thuộc tính Ý nghĩa
android:layout_alignParentBottom true căn thẳng cạnh dưới view con với cạnh dưới View cha
android:layout_alignParentLeft true căn thẳng cạnh trái view con với cạnh trái View cha
android:layout_alignParentRight true căn thẳng cạnh phải view con với cạnh phải View cha
android:layout_alignParentTop true căn thẳng cạnh trên view con với cạnh trên View cha
android:layout_centerInParent true căn view con vào giữa View cha
android:layout_centerHorizontal true căn view con vào giữa View cha theo chiều ngang
android:layout_centerVertical true căn view con vào giữa View cha theo chiều đứng

Ví dụ hình sau View có nền màu tím được xác định như vậy là do có hai thuộc tính android : layout_centerInParent = " true " ( làm cho View con nằm giữa ) android : layout_alignParentRight = " true " ( làm cho View con căn thẳng cạnh phải với cạnh phải của View cha )


        android:layout_centerInParent="true"
        android:layout_alignParentRight="true"

android:text="view3"
android:gravity="center"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="#d4a00f8f" />

Định vị View con bằng liên hệ giữa chúng với nhau

View con trong RelativeLayout ngoài mối liên hệ với View cha như trên, chúng có hoàn toàn có thể thiết lập liên hệ với nhau ví dụ như View con này nằm phía trên một View con khác, nằm phía dưới một view con khác ...

Thuộc tính Ý nghĩa
android:layout_below Nằm phía dưới View có ID được chỉ ra
android:layout_above Nằm phía trên View có ID được chỉ ra
android:layout_toLeftOf Nằm phía trái View có ID được chỉ ra
android:layout_toRightOf Nằm phía phải View có ID được chỉ ra
android:layout_alignBottom Căn thẳng cạnh dưới với cạnh dưới của View có ID được chỉ ra
android:layout_alignLeft Căn thẳng cạnh trái với cạnh trái của View có ID được chỉ ra
android:layout_alignRight Căn thẳng cạnh phải với cạnh phải của View có ID được chỉ ra
android:layout_alignTop Căn thẳng cạnh trên với cạnh trên của View có ID được chỉ ra

Các android:layout_margin ... của View con

Về phía những cạnh của View con ( left, top, right, bottom ) nếu có mối liên hệ với View cha hoặc View con thì theo phía đó hoàn toàn có thể thiết lập thêm thuộc tính về margin như : android : layout_marginLeft, android : layout_marginTop, android : layout_marginRight, android : layout_marginBottom để thiết lập khoảng cách của mối liên hệ đó .

Ví dụ sau sử dụng các liên hệ của View con và margin để định vị các View con




    
        android:layout_toLeftOf="@id/view3"
        android:layout_alignBottom="@id/view3"

android:layout_width="200dp"
android:layout_height="50dp"
android:background="#e8d33636" />

android:layout_alignRight="@id/view1"
android:layout_above="@id/view1"

android:gravity="center"
android:layout_width="50dp"
android:layout_height="200dp"
android:background="#e71faf15" />

android:layout_centerInParent="true"
android:layout_alignParentRight="true"
android:layout_marginRight="30dp"

android:text="view3"
android:gravity="center"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="#d4a00f8f" />

Ví dụ màn hình đăng nhập RelativeLayout





    

    
    
    
    

    


ĐĂNG KÝ KÊNH, XEM CÁC VIDEO TRÊN XUANTHULAB

Đăng ký nhận bài viết mới