Bộ công cụ Android UI cung cấp một số trình quản lý bố trí khá dễ dàng để sử dụng, bạn chỉ cần các tính năng cơ bản bố trí để thực hiện cho giao diện người dùng. Một ví dụ phổ biến là việc lạm dụng LinearLayout, dẫn đến một sự gia tăng hệ thống phân cấp view. Mỗi lượt xem, hoặc tồi tệ hơn mỗi quản lý bố trí, bạn thêm vào ứng dụng đi kèm với chi phí: khởi tạo, bố trí và vẽ trở nên chậm hơn. Những đường chuyền bố trí có thể đặc biệt đắt tiền khi bạn làm nhiều LinearLayout sử dụng tham số.
Hãy xem xét ví dụ đơn giản và phổ biến của bố trí: danh sách với một biểu tượng bên trái, một tiêu đề ở đầu và một mô tả tùy chọn bên dưới tiêu đề.
Để hiểu rõ cách thức, một ImageView và hai TexView, được định vị đối với nhau:
Thực hiện bố trí đơn giản với LinearLayout. Là một LinearLayout ngang với một ImageView và một LinearLayout thẳng đứng, trong đó có hai TextView. Mã nguồn bố trí như sau:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip">
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginRight="6dip"
android:src="@drawable/icon" />
<LinearLayout
android:orientation="vertical"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="fill_parent">
<TextView
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:gravity="center_vertical"
android:text="DOTNET GROUP" />
<TextView
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:singleLine="true"
android:ellipsize="marquee"
android:text="Chuyên xây dựng và phát triển dự án .NET" />
</LinearLayout>
</LinearLayout>
Bố trí này làm việc nhưng có thể lãng phí nếu cho mỗi mục trong danh sách ListView. Việc bố trí tương tự có thể được viết lại sử dụng một đơn RelativeLayout , do đó tiết kiệm, và mức độ tốt hơn trong phân cấp xem, mỗi mục trong danh sách.
Việc thực hiện bố trí với RelativeLayout vẫn đơn giản:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip">
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_marginRight="6dip"
android:src="@drawable/icon" />
<TextView
android:id="@+id/secondLine"
android:layout_width="fill_parent"
android:layout_height="26dip"
android:layout_toRightOf="@id/icon"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:singleLine="true"
android:ellipsize="marquee"
android:text="Chuyên đào tạo lập trình viên .NET" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/icon"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_above="@id/secondLine"
android:layout_alignWithParentIfMissing="true"
android:gravity="center_vertical"
android:text="DOTNET GROUP" />
</RelativeLayout>