Các khái niệm và cách triển khai Jetpack Compose
Android Studio hỗ trợ nhiều thuộc tính XML trong không gian tên tools, cho phép bật các tính năng tại thời điểm thiết kế (chẳng hạn như bố cục để hiển thị trong một mảnh) hoặc hành vi trong thời gian biên dịch (chẳng hạn như chế độ thu nhỏ để áp dụng cho tài nguyên XML của bạn). Khi bạn tạo ứng dụng, công cụ bản dựng sẽ xoá các thuộc tính này để không làm ảnh hưởng đến kích thước APK hoặc hành vi trong thời gian chạy.
Để sử dụng các thuộc tính này, hãy thêm không gian tên tools vào thành phần gốc của mỗi tệp XML mà bạn muốn sử dụng như sau:
<RootTag xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" >
Thuộc tính xử lý lỗi
Thuộc tính sau đây giúp ngăn chặn thông báo cảnh báo về tìm lỗi mã nguồn:
tools:targetApi
Dành cho: Mọi phần tử
Được dùng bởi: Công cụ tìm lỗi mã nguồn
Thuộc tính này hoạt động giống như chú giải @TargetApi trong mã Java. Thuộc tính này cho phép bạn chỉ định cấp độ API (dưới dạng số nguyên hoặc tên mã) hỗ trợ phần tử này.
Thuộc tính này thông báo với các công cụ là bạn tin rằng phần tử này (và bất kỳ phần tử con nào) sẽ chỉ được dùng ở cấp API đã chỉ định trở lên. Điều này sẽ ngăn công cụ tìm lỗi mã nguồn gửi cảnh báo cho bạn nếu phần tử đó hoặc các thuộc tính của phần tử đó không có ở cấp API mà bạn chỉ định làm minSdkVersion.
Ví dụ: bạn có thể dùng thuộc tính này vì GridLayout chỉ có trên cấp độ API 14 trở lên, nhưng bạn biết rằng mã của bạn sẽ không dùng bố cục này đối với mọi phiên bản thấp hơn:
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:targetApi="14" >
(Tuy nhiên, hãy lưu ý rằng bạn nên sử dụng GridLayout từ thư viện hỗ trợ.)
Thuộc tính khung hiển thị tại thời điểm thiết kế
Các thuộc tính sau đây xác định đặc điểm bố cục chỉ hiển thị trong bản xem trước bố cục của Android Studio.
tools: thay vì android:
Dành cho: <View>
Được dùng bởi: Layout Editor của Android Studio
Bạn có thể chèn dữ liệu mẫu vào bản xem trước bố cục bằng cách sử dụng tiền tố tools: thay vì android: với bất kỳ thuộc tính <View> nào từ khung Android.
Điều này rất hữu ích khi giá trị của thuộc tính chưa được điền cho đến thời gian chạy và bạn muốn xem hiệu ứng trong bản xem trước bố cục.
Ví dụ: nếu đặt giá trị thuộc tính android:text tại thời gian chạy hoặc muốn xem bố cục với một giá trị khác so với giá trị mặc định, thì bạn có thể thêm tools:text để ghi rõ một số văn bản chỉ dành cho mục đích xem trước bố cục.

tools:text đặt "Google Voice" làm giá trị cho bản xem trước bố cục.Bạn có thể thêm cả thuộc tính không gian tên android: (được dùng tại thời gian chạy) và thuộc tính tools: phù hợp (chỉ ghi đè thuộc tính thời gian chạy trong bản xem trước bố cục).
Bạn cũng có thể dùng thuộc tính tools: để chỉ huỷ chế độ cài đặt thuộc tính cho bản xem trước bố cục. Ví dụ: nếu bạn có FrameLayout có 2 thành phần con nhưng chỉ muốn xem 1 thành phần con trong bản xem trước bố cục, thì bạn có thể thiết lập để một trong số các thành phần con đó không hiển thị trong bản xem trước bố cục, như ví dụ dưới đây:
<Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="First" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Second" tools:visibility="invisible" />
Khi sử dụng Layout Editor trong khung hiển thị bản thiết kế, cửa sổ Properties (Thuộc tính) sẽ cho phép bạn chỉnh sửa một số thuộc tính của khung hiển thị tại thời điểm thiết kế. Mỗi thuộc tính tại thời điểm thiết kế được biểu thị bằng biểu tượng cờ lê
bên cạnh tên thuộc tính để phân biệt thuộc tính này với thuộc tính thực cùng tên.
tools:context
Dành cho: Mọi <View> gốc
Được sử dụng bởi: Công cụ tìm lỗi mã nguồn, Layout Editor của Android Studio
Thuộc tính này khai báo hoạt động nào liên kết với bố cục này theo mặc định. Điều này giúp bật các tính năng trong trình chỉnh sửa hoặc bản xem trước bố cục cần biết thông tin về hoạt động, chẳng hạn như chủ đề bố cục nào có trong bản xem trước và vị trí cần chèn trình xử lý onClick được tạo từ quá trình sửa nhanh, như trình bày trong hình 2.
onClick chỉ hoạt động nếu bạn đã đặt tools:context.Bạn có thể chỉ định tên lớp hoạt động bằng cách sử dụng cùng tiền tố dấu chấm như trong tệp kê khai (không bao gồm tên gói đầy đủ).
Ví dụ:
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity" >
tools:itemCount
Dành cho: <RecyclerView>
Được dùng bởi: Layout Editor của Android Studio
Đối với một RecyclerView nhất định, thuộc tính này quy định số lượng mục mà Layout Editor cần kết xuất trong cửa sổ Preview (Xem trước).
Ví dụ:
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:itemCount="3"/>
tools:layout
Dành cho: <fragment>
Được dùng bởi: Layout Editor của Android Studio
Thuộc tính này khai báo bố cục mà bạn muốn bản xem trước bố cục vẽ bên trong mảnh (vì bản xem trước bố cục không thể thực thi mã hoạt động thường áp dụng bố cục đó).
Ví dụ:
<fragment android:name="com.example.main.ItemListFragment"
tools:layout="@layout/list_content" />
tools:listitem, tools:listheader, tools:listfooter
Dành cho: <AdapterView> (và các lớp con như <ListView>)
Được dùng bởi: Layout Editor của Android Studio
Các thuộc tính này chỉ định bố cục cần hiển thị trong bản xem trước bố cục cho các mục, tiêu đề và phần chân trang của danh sách. Bất kỳ trường dữ liệu nào trong bố cục đều được điền nội dung dạng số, chẳng hạn như "Mục 1" để các mục trong danh sách không lặp lại.
Ví dụ:
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:listitem="@layout/sample_list_item"
tools:listheader="@layout/sample_list_header"
tools:listfooter="@layout/sample_list_footer" />
tools:showIn
Dành cho: Mọi <View> gốc trong bố cục được <include> tham chiếu
Được dùng bởi: Layout Editor của Android Studio
Thuộc tính này cho phép bạn dùng <include> để trỏ đến một bố cục sử dụng bố cục này, nhờ đó, bạn có thể xem trước và chỉnh sửa tệp này khi tệp xuất hiện trong lúc được nhúng vào bố cục mẹ.
Ví dụ:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:showIn="@layout/activity_main" />
Giờ đây, bản xem trước bố cục hiển thị bố cục TextView này vì bố cục này xuất hiện bên trong bố cục
activity_main.
tools:menu
Dành cho: Mọi <View> gốc
Được dùng bởi: Layout Editor của Android Studio
Thuộc tính này chỉ định trình đơn mà bản xem trước bố cục hiển thị trong thanh ứng dụng. Giá trị có thể là một hoặc nhiều mã trình đơn, được phân tách bằng dấu phẩy (không có @menu/ hay bất kỳ tiền tố mã nào tương tự và không có đuôi .xml).
Ví dụ:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:menu="menu1,menu2" />
tools:minValue, tools:maxValue
Dành cho: <NumberPicker>
Được dùng bởi: Layout Editor của Android Studio
Các thuộc tính này đặt giá trị tối thiểu và tối đa cho khung hiển thị NumberPicker.
Ví dụ:
<NumberPicker xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/numberPicker"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:minValue="0"
tools:maxValue="10" />
tools:openDrawer
Dành cho: <DrawerLayout>
Được dùng bởi: Layout Editor của Android Studio
Thuộc tính này cho phép bạn mở DrawerLayout trong bản xem trước.
Bạn cũng có thể sửa đổi cách Layout Editor kết xuất bố cục bằng cách truyền một trong các giá trị sau:
Bảng 1. Các giá trị có tác dụng sửa đổi cách Layout Editor kết xuất DrawerLayout
| Hằng số | Giá trị | Mô tả |
|---|---|---|
end | 800005 | Đẩy đối tượng đến cuối vùng chứa của nó, không thay đổi kích thước của đối tượng. |
left | 3 | Đẩy đối tượng sang bên trái vùng chứa của nó, không thay đổi kích thước của đối tượng. |
right | 5 | Đẩy đối tượng sang bên phải vùng chứa của nó, không thay đổi kích thước của đối tượng. |
start | 800003 | Đẩy đối tượng đến đầu vùng chứa, không thay đổi kích thước của đối tượng. |
Ví dụ:
<androidx.drawerlayout.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:openDrawer="start" />
Các tài nguyên "@tools:sample/*"
Dành cho: Mọi khung hiển thị hỗ trợ hình ảnh hoặc văn bản giao diện người dùng
Được dùng bởi: Layout Editor của Android Studio
Thuộc tính này cho phép bạn chèn hình ảnh hoặc dữ liệu giữ chỗ vào khung hiển thị của mình. Ví dụ: để thử xem bố cục hoạt động như thế nào với văn bản trước khi có văn bản giao diện người dùng hoàn thiện cho ứng dụng của bạn, bạn có thể sử dụng văn bản giữ chỗ như sau:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="@tools:sample/lorem" />
Bảng sau đây mô tả các loại dữ liệu giữ chỗ mà bạn có thể chèn vào bố cục:
Bảng 2. Dữ liệu giữ chỗ cho bố cục
| Giá trị thuộc tính | Mô tả dữ liệu giữ chỗ |
|---|---|
@tools:sample/full_names |
Họ và tên được tạo ngẫu nhiên từ tổ hợp @tools:sample/first_names và @tools:sample/last_names |
@tools:sample/first_names |
Tên phổ biến |
@tools:sample/last_names |
Họ phổ biến |
@tools:sample/cities |
Tên của các thành phố trên khắp thế giới |
@tools:sample/us_zipcodes |
Mã bưu chính Hoa Kỳ được tạo ngẫu nhiên |
@tools:sample/us_phones |
Số điện thoại được tạo ngẫu nhiên có định dạng sau: (800) 555-xxxx. |
@tools:sample/lorem |
Văn bản giữ chỗ bằng chữ Latinh |
@tools:sample/date/day_of_week |
Ngày và giờ ngẫu nhiên theo định dạng cho trước |
@tools:sample/date/ddmmyy | |
@tools:sample/date/mmddyy | |
@tools:sample/date/hhmm | |
@tools:sample/date/hhmmss | |
@tools:sample/avatars |
Các vectơ vẽ được mà bạn có thể dùng làm hình đại diện hồ sơ |
@tools:sample/backgrounds/scenic |
Hình ảnh mà bạn có thể dùng làm hình nền |