[Android] Chương 1.2 : Giới thiệu về Layout.

Layout là gì?
Layout định nghĩa cấu trúc cho một giao diện người dùng. Bạn có thể tạo layout theo hai cách sau:
-    Định nghĩa trong XML.
-    Khởi tạo trong thời điểm runtime.
Lợi điểm của thiết kế giao diện trong XML cho phép bạn tách riêng giao diện và code điều khiển các hành vi của chúng. Điều này có nghĩa là bạn có thể sửa đổi hoặc điều chỉnh giao diện mà không cần can thiệp vào mã nguồn và biên dịch lại. Ngoài ra cách thức còn giúp dễ dàng hơn trong việc hình dung ra cấu trúc của giao diện mà bạn muốn tạo.

Layout trong XML
Mỗi tệp layout phải chứa một phần tử gốc (root), đó phải là một đối tượng View hoặc ViewGroup. Khi phần tử gốc được xác định, bạn có thể thêm những đối tượng layout khác để từ đó từng bước xây dựng giao diện với hệ thống View phân cấp. Ví dụ, đây là một LinearLayout có orientation=”vertical” (bố trí theo chiều dọc) trong đó chứa một TextView và một Button.

<?xml version="1.0" encoding="utf-8" ?>
 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"
android:orientation="vertical">
 
<EditText 
android:id="@+id/edit_text"  
android:layout_width="fill_parent"  
android:layout_height="wrap_content"  
android:text="@string/edit_text"  
android:inputType="text"/>
 
<Button 
android:id="@+id/button1"  
android:layout_width="wrap_content"  
android:layout_height="wrap_content"  
android:text="@string/button1"/>
 
</LinearLayout>

Sau khi thiết kế xong bạn hãy lưu lại với đuôi mở rộng là .xml trong thư mục res/layout/.
Nạp thẻ XML Resource
Khi ứng dụng của bạn được biên dịch, mỗi tệp XML layout sẽ thành một view resource. Bạn có thể nạp layout từ mã ứng dụng của bạn bằng cách gọi phương thức setContentView(). Truyền cho nó tham số để tham chiếu đến layout của bạn theo mẫu: R.layout.layout_file_name
Ví dụ, XML layout của bạn được lưu trong tệp activity_main.xml, khi đó mã để nạp layout này sẽ như sau:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }