LinearLayout là một nhóm view giúp căn chỉnh tất cả phần tử con theo một hướng duy nhất, theo chiều dọc hoặc chiều ngang. Bạn có thể chỉ định hướng bố cục bằng thuộc tính android:orientation.
LinearLayout có 3 phần tử con theo hướng ngang.
Tất cả phần tử con của LinearLayout đều được xếp chồng lên nhau, vì vậy, danh sách dọc chỉ có một phần tử con trong mỗi hàng, bất kể chiều rộng của phần tử con là bao nhiêu. Danh sách ngang chỉ có một hàng và chiều cao của hàng này bằng chiều cao của phần tử con cao nhất cộng với khoảng đệm. LinearLayout tuân theo lề giữa các phần tử con và trọng lực (căn phải, giữa hoặc trái) của từng phần tử con.
Tỷ lệ kích thước bố cục
LinearLayout cũng hỗ trợ việc chỉ định tỷ lệ kích thước cho từng phần tử con bằng thuộc tính android:layout_weight. Thuộc tính này gán giá trị "quan trọng" cho một khung hiển thị xét về mức độ không gian chiếm dụng trên màn hình. Giá trị trọng số lớn hơn cho phép khung hiển thị mở rộng để lấp đầy không gian còn lại trong chế độ xem của cha mẹ. Khung hiển thị con có thể chỉ định giá trị trọng số và mọi khoảng trống còn lại trong nhóm view sẽ được chỉ định cho các thành phần con theo tỷ lệ, dựa trên trọng số đã khai báo của chúng. Trọng số mặc định là 0.
Phân bổ đồng đều
Để tạo bố cục tuyến tính trong đó mỗi phần tử con sử dụng cùng một mức độ không gian trên màn hình, hãy đặt giá trị android:layout_height của mỗi khung hiển thị thành "0dp" đối với bố cục dọc hoặc android:layout_width của mỗi khung hiển thị thành "0dp" đối với bố cục ngang. Sau đó, hãy đặt android:layout_weight của mỗi khung hiển thị thành "1".
Phân bổ không đồng đều
Bạn cũng có thể tạo bố cục tuyến tính trong đó mức độ sử dụng không gian trên màn hình của các phần tử con là khác nhau. Hãy xem các ví dụ sau đây:
- Giả sử bạn có 3 trường văn bản: 2 trường có giá trị trọng số là 1 và trường thứ ba có giá trị trọng số mặc định là 0. Trường văn bản thứ ba có giá trị trọng số là 0, chỉ chiếm dụng những khoảng không gian do nội dung của nó bắt buộc. Hai trường văn bản còn lại có giá trị trọng số là 1, mở rộng như nhau để lấp đầy không gian còn lại sau khi nội dung của cả ba trường được đo lường.
- Nếu bạn có 3 trường văn bản, trong đó 2 trường có giá trị tỷ lệ kích thước là 1 và trường thứ ba có tỷ lệ kích thước là 2, thì không gian còn lại sau khi đo lường nội dung của cả 3 trường sẽ được phân bổ như sau: một nửa cho trường có giá trị tỷ lệ kích thước là 2 và một nửa được chia đều cho các trường có giá trị tỷ lệ kích thước là 1.
Hình minh hoạ và đoạn mã sau đây cho biết cách tỷ lệ kích thước bố cục hoạt động ra sao trong hoạt động "gửi tin nhắn". Trường Tới, dòng Chủ đề và nút Gửi chỉ chiếm chiều cao mà các phần tử đó cần. Vùng tin nhắn chiếm phần chiều cao còn lại của hoạt động.
LinearLayout theo hướng dọc.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="16dp" android:paddingRight="16dp" android:orientation="vertical" > <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/to" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/subject" /> <EditText android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:gravity="top" android:hint="@string/message" /> <Button android:layout_width="100dp" android:layout_height="wrap_content" android:layout_gravity="end" android:text="@string/send" /> </LinearLayout>
Để biết thông tin chi tiết về các thuộc tính có sẵn cho mỗi chế độ xem dữ liệu trẻ em của một LinearLayout, hãy xem LinearLayout.LayoutParams.