Friday, January 8, 2010

Bắt đầu với Android layout

Theo yêu cầu của mọi người topic này mình sẽ nói về layout trong android.
Layout là kiến trúc cho giao diện người dùng trong một activity, nó nắm dữ tất cả các thành phần hiển thị ra cho người dùng.
Có 2 cách để định nghĩa và khai báo layout:
* Định nghĩa các phần tử UI trong XML.
* Khởi tạo các thành phần layout lúc chạy: Bạn có thể tạo các đối tượng View và các ViewGroup trong code của bạn.

VD về định nghĩa một layout trong XML:

<?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" >
    <TextView android:id="@+id/text"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="Hello, I am a TextView" />
    <Button android:id="@+id/button"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="Hello, I am a Button" />
</LinearLayout>

Bạn hãy lưu nó dưới dạng file xml và để trong thu mục res/layout/, giả sử tui save nó dưới cái tên simple_layout.xml.
Giờ chúng ta sẽ load layout mà chúng ta vừa save ở trên:
Bạn có thể load layout của bạn trong hàm onCreate của Activity bằng hàm setContentView() Để nó reference đến đúng layout của bạn chúng ta phải đưa vào tham số R.layout.layout_file_name. Với VD trên ta có đoạn code load layout trong Activity như sau:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView.(R.layout.simple_layout);
}


Các tham số và vị trí của các thành phần trên layout:
+ Các đối tượng View và GroupView hỗ trợ rất nhiều các thuộc tính, có những thuộc tính chỉ riêng nó mới có (VD TextView có thuộc tính textSize). Nhưng cũng có những thuộc tính là chung bởi vì chúng được kế thừa từ các lớp cha của chúng. Có một số thuộc tính chung cho tất cả các View object bởi vì chúng được kế thừa từ những lớp View gốc (VD mọi view đều có thuộc tính id).
* Thuộc tính id: Bất kỳ View nào cũng có thuộc tính id. Để khải báo một id bạn khai báo như sau:

   1. android:id="@+id/one"


Ký tự @ để xác định nó là id, là định danh của đối tượng View. Ký tự + nghĩa là đó là một đối tượng mới cần được tạo và add vào resource của chúng ra (Trong file R.java). Khi bạn muốn referencing đến một đối tượng view khác bạn khai báo như sau:

   1. android:id="@android:id/one"


Trỏ đến đối tượng View có định danh id là "one"
Hoặc

   1. android:layout_toLeftOf="@id/one"


Nằm bên trái đối tượng View có định danh id là "one"
....
Bạn có thể khai báo một đối tượng hoàn chỉnh như sau:

<Button android:id="@+id/my_button"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@string/my_button_text"/>

Khởi tạo một thể hiện của nó trong code của chúng ta như sau:

Button myButton = (Button) findViewById(R.id.my_button);

Ngoài ra còn có rất nhiều các thuộc tính khác nữa cuae View như:
layout_width và layout_height
padding và paddingBottom
layout_toLeftOf và layout_toRightOf
................
Bạn có thể tham khảo thêm bằng cách mở file layout trên Eclipse rồi sử dụng khả năng auto suggestion của Eclipse để thấy được các thuộc tính của một view trong layout.

Một số layout cơ bản trong android:

a/ FrameLayout: đây là giao diện cơ bản nhất, đơn thuần chỉ là không gian trống trên ứng dụng và không có trật tự, rất cực khi các thành phần (Button, Edit,...) được sắp xếp phía trên.
b/ LinearLayout: đây là layout có định hướng dọc hoặc ngang, tức là các thành phần bên trong layout sẽ được xếp dọc từ trái qua phải hoặc từ trên xuống dưới theo chiều ngang.
c/ TableLayout: layout dang column và row, trong đây bạn phải dùng TableRow để define từng row và số column trong từng row.
d/ AbsoluteLayout: đây là dạng layout thiết kế dựa trên việc xác định toạ độ x, y của các thành phần con.
e/ RelativeLayout: lớp layout này cho phép sắp xếp các thành phần dựa trên sự tương tác với 1 thành phần nhấn định như (bên phải, trái, bên dưới so với 1 đối tượng nhất định).

No comments:

Post a Comment