Android: RelativeLayout trong Android
RelativeLayout trong Android cho phép bạn xác định vị trí các view con trong mối quan hệ cân xứng với nhau. Vị trí của mỗi view có thể được xác định tùy theo các phần tử anh em hoặc tùy theo phần tử cha.
Relative Layout
Thuộc tính của RelativeLayout trong Android
Bảng dưới liệt kê một số thuộc tính riêng cho RelativeLayout:
Thuộc tính | Miêu tả |
---|---|
android:id | Đây là ID mà nhận diện duy nhất Layout đó |
android:gravity | Xác định cách một đối tượng nên đặt nội dung của nó trên cả hai tọa độ X và Y. Giá trị có thể có là top, bottom, left, right, center, center_vertical, center_horizontal ... |
android:ignoreGravity | Chỉ rằng View nào không bị tác động bởi thuộc tính gravity |
Sử dụng RelativeLayout, bạn có thể căn chỉnh hai phần tử bằng đường viền phải, hoặc làm cho một phần tử ở dưới phần tử khác, đưa vào chính giữa màn hình, chính giữa trái, … Theo mặc định, tất cả view con được vẽ tại top-left của Layout, vì thế bạn phải định nghĩa vị trí của mỗi view bằng cách sử dụng các thuộc tính đa dạng có sẵn từ lớp RelativeLayout.LayoutParams. Dưới đây là một số thuộc tính quan trọng:
Thuộc tính | Miêu tả |
---|---|
android:layout_above | Đặt cạnh dưới của view này ở trên view ID đã cho và phải là một tham chiếu tới resource khác, trong dạng "@[+][package:]type:name" |
android:layout_alignBottom | Làm cạnh dưới của view này kết nối với cạnh dưới của view ID đã cho và phải là một tham chiếu tới resource khác, trong dạng "@[+][package:]type:name". |
android:layout_alignLeft | Làm cạnh trái của view này kết nối với cạnh trái của view ID đã cho và phải là một tham chiếu tới resource khác, trong dạng "@[+][package:]type:name". |
android:layout_alignParentBottom | Nếu true, làm cạnh dưới của view này kết nối với cạnh dưới của view cha. Phải là một giá trị Boolean, hoặc "true" hoặc "false" |
android:layout_alignParentEnd | Nếu true, làm cạnh cuối màn hình của view này kết nối với cạnh cuối màn hình của view cha. Phải là một giá trị Boolean, hoặc "true" hoặc "false" |
android:layout_alignParentLeft | Nếu true, làm cạnh trái của view này kết nối với cạnh trái của view cha. Phải là một giá trị Boolean, hoặc "true" hoặc "false" |
android:layout_alignParentRight | Nếu true, làm cạnh phải của view này kết nối với cạnh phải của view cha. Phải là một giá trị Boolean, hoặc "true" hoặc "false" |
android:layout_alignParentStart | Nếu true, làm cạnh đầu màn hình của view này kết nối với cạnh đầu màn hình của view cha. Phải là một giá trị Boolean, hoặc "true" hoặc "false" |
android:layout_alignParentTop | Nếu true, làm cạnh trên của view này kết nối với cạnh trên của view cha. Phải là một giá trị Boolean, hoặc "true" hoặc "false" |
android:layout_alignRight | Làm cạnh phải của view này kết nối với cạnh phải của view ID đã cho và phải là một tham chiếu tới resource khác, trong dạng "@[+][package:]type:name". |
android:layout_alignStart | Làm cạnh đầu màn hình của view này kết nối với cạnh đầu màn hình của view ID đã cho và phải là một tham chiếu tới resource khác, trong dạng "@[+][package:]type:name". |
android:layout_alignTop | Làm cạnh trên của view này kết nối với cạnh trên của view ID đã cho và phải là một tham chiếu tới resource khác, trong dạng "@[+][package:]type:name". |
android:layout_below | Đặt cạnh trên của view này dưới view ID đã cho và phải là một tham chiếu tới resource khác, trong dạng "@[+][package:]type:name". |
android:layout_centerHorizontal | Nếu true, căn chỉnh giữa view con này theo chiều ngang bên trong view cha. Phải là một giá trị boolean, hoặc "true" hoặc "false" |
android:layout_centerInParent | Nếu true, căn chỉnh giữa view con này theo chiều ngang và dọc bên trong view cha. Phải là một giá trị boolean, hoặc "true" hoặc "false" |
android:layout_centerVertical | Nếu true, căn chỉnh giữa view con này theo chiều dọc bên trong view cha. Phải là một giá trị boolean, hoặc "true" hoặc "false" |
android:layout_toEndOf | Đặt cạnh đầu màn hình của view này tới cạnh cuối màn hình của view ID đã cho và phải là một tham chiếu tới resource khác, trong dạng "@[+][package:]type:name". |
android:layout_toLeftOf | Đặt cạnh phải của view này tới cạnh trái của view ID đã cho và phải là một tham chiếu tới resource khác, trong dạng "@[+][package:]type:name". |
android:layout_toRightOf | Đặt cạnh trái của view này tới cạnh phải của view ID đã cho và phải là một tham chiếu tới resource khác, trong dạng "@[+][package:]type:name". |
android:layout_toStartOf | Đặt cạnh cuối màn hình của view này tới cạnh đầu màn hình của view ID đã cho và phải là một tham chiếu tới resource khác, trong dạng "@[+][package:]type:name". |
Ví dụ
Ví dụ sau sẽ minh họa cách sử dụng RelativeLayout.
Sau đây là nội dung của file res/layout/activity_main.xml:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <EditText android:id="@+id/editTextName" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="" android:autofillHints=""/> <LinearLayout android:layout_width="match_parent" android:layout_height="543dp" android:layout_alignTop="@+id/editTextName" android:layout_marginTop="61dp" android:orientation="vertical"> <Button android:id="@+id/btn1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/button1"/> <Button android:id="@+id/btn2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/button2"/> </LinearLayout> </RelativeLayout>
Sau đây là nội dung của res/values/strings.xml:
<resources> <string name="app_name">RelativeLayoutV1Study</string> <string name="button1">Button1</string> <string name="button2">Button2</string> </resources>
Chạy ứng dụng ở trên ta được kết quả như sau: