Layout là một loại View Group có thể chứa được nhiều view khác
1. Linear Layout : Loai layout này khá cứng nhắc về bố cục của các View nằm bên trong nó.
Có 2 loại bố cục cho layout này là: Dọc( Vertical), Ngang (Horizontal).
Các thuộc tính của Linear Layout trong Android
Dưới đây là các thuộc tính quan trọng xác định cụ thể cho Linear Layout: −
Attribute |
Miêu tả |
---|---|
android:id | Đây là ID mà nhận diện duy nhất Layout |
android:baselineAligned | Phải là một giá trị boolean hoặc “true” hoặc “false” và ngăn Layout từ việc căn chỉnh các baseline của view con |
android:baselineAlignedChildIndex | Khi một Linear Layout là một phần của Layout khác mà là baseline aligned, nó có thể xác định view con nào của nó là baseline align |
android:divider | Đây là drawable để sử dụng như một vertical divider giữa các button. Bạn sử dụng một giá trị màu trong dạng “#rgb”, “#argb”, “#rrggbb”, hoặc “#aarrggbb”. |
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ể là top, bottom, left, right, center, center_vertical, center_horizontal … |
android:orientation | Xác định hướng sắp xếp và bạn sẽ sử dụng “horizontal” cho một hàng, “vertical” cho một cột. Mặc định là horizontal |
android:weightSum | Tính tổng độ rộng của các view con |
Bài tập 1: Dùng Linear layout thiết kế giao diện sau:
Phân tích layout :
Phân tích layout :Phần layout được khoanh vùng đỏ linear layout ở dạng vertical, chứa 2 Button Phần layout được khoanh vùng xanh chứa linear layout ở dạng horizontal, chứa 2 Button có cấu trúc như hình bên
2.Tiến hành chỉnh sửa theo yêu cầu:
Thiết kế Button 1 và 2: Sử dụng thuộc tính layout_weight với các giá trị là 1 và 3.
<Button android:layout_width="match_parent" android:layout_height="0dp" android:text="Button 1" android:layout_weight="1" android:id="@+id/button" /> <Button android:layout_width="match_parent" android:layout_height="0dp" android:text="Button 2" android:layout_weight="3" android:id="@+id/button2" />
-Với View nằm trong linear layout theo chiều ngang thì thuộc tính:
android:layout_width="0dp"
–Với View nằm trong linear layout theo chiều dọc thì thuộc tính:
android:layout_height="0dp"
Thiết kế Button 3 và 4: Được chứa trong Linear layout dạng horizontal ,kết hợp sử dụng thuộc tính layout_weight với các giá trị là 3 và 1.
<LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="74dp"> <Button android:layout_width="0dp" android:layout_height="match_parent" android:text="Button3" android:layout_weight="3" android:id="@+id/button3" /> <Button android:layout_width="0dp" android:layout_height="match_parent" android:text="Button4" android:layout_weight="1" android:id="@+id/button4" /> </LinearLayout>
Kết quả cuối cùng đạt được sẽ là một layout hoàn chỉnh theo đúng yêu cầu.
Bài tập 2: Kết hợp lồng nhiều layout trong linearlayout:
Phân tích layout
- Phần View được khoanh đỏ để nội dung trong View hiển thị lên trên ta sử
dụng thuộc tính gravity - Phần View được khoanh xanh để View nằm bên phải ta sử dụng thuộc tính layout_gravity
*Lưu ý:
- Gravity: Định nghĩa nội dung bên trong View
- Layout_gravity: Định nghĩa vị trí của View
Bắt đầu thiết kế
- Với View chứa Message để hiển thị lên top sử dụng thuộc tính : android:gravity=“top” tùy theo nhu cầu có thể sử dụng các giá trị khác nhau: center,bottom…..
- Với View Button Send để nằm bên trái theo yêu cầu sử dụng thuộc tính: android:layout_gravity=“right” với giá trị bằng right.
Ngoài ra thuộc tính này cũng có nhiều giá trị khác tương tự như gravity.
<EditText android:layout_width="match_parent" android:layout_height="0dp" android:id="@+id/editText3" android:gravity="top" android:layout_weight="1" android:hint="Mesage" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Send" android:id="@+id/button" android:layout_gravity="right" />
Như vậy chúng ta đã thấy được sự khác biệt cơ bản giữa hai thuộc tính gravity và layout_gravity trong linear layout cũng như cách sử dụng cơ bản của các thuộc tính này.
Source code bài 2:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editText" android:hint="To" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editText2" android:hint="Subject" /> <EditText android:layout_width="match_parent" android:layout_height="0dp" android:id="@+id/editText3" android:gravity="top" android:layout_weight="1" android:hint="Mesage" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Send" android:id="@+id/button" android:layout_gravity="right" /> </LinearLayout>