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
Các 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:ignore
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 chấp nhận một danh sách được phân tách bằng dấu phẩy gồm các mã sự cố tìm lỗi mã nguồn mà bạn muốn các công cụ bỏ qua trên phần tử này hoặc bất kỳ thành phần con cháu nào.
Ví dụ: bạn có thể yêu cầu các công cụ bỏ qua lỗi MissingTranslation
:
<string name="show_all_apps" tools:ignore="MissingTranslation">All</string>
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: 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 API cấp 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ợ.)
tools:locale
Dành cho: <resources>
Được sử dụng bởi: Công cụ tìm lỗi mã nguồn, trình chỉnh sửa Android Studio
Thuộc tính này cho các công cụ biết ngôn ngữ hoặc khu vực mặc định của các tài nguyên trong phần tử <resources>
nhất định để tránh nhận cảnh báo từ trình kiểm tra lỗi chính tả.
Nếu không, công cụ này sẽ giả định ngôn ngữ là tiếng Anh.
Giá trị này phải là một bộ hạn định ngôn ngữ hợp lệ.
Ví dụ: bạn có thể thêm đoạn giá trị này vào tệp values/strings.xml
mặc định để cho biết ngôn ngữ dùng cho các chuỗi mặc định là tiếng Tây Ban Nha chứ không phải tiếng Anh:
<resources xmlns:tools="http://schemas.android.com/tools"
tools:locale="es">
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.
![Thuộc tính tools:text đặt Google Voice làm giá trị cho bản xem trước bố cục](https://developer.android.com/static/studio/images/write/tools-attribute-text_2x.png?authuser=19&hl=vi)
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.
![Tính năng sửa nhanh cho thuộc tính onClick chỉ hoạt động nếu bạn đã đặt tools:context](https://developer.android.com/static/studio/images/write/tools-attribute-context_2x.png?authuser=19&hl=vi)
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 của 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 |
Thuộc tính rút gọn tài nguyên
Các thuộc tính sau cho phép bạn bật tính năng kiểm tra tham chiếu nghiêm ngặt và khai báo xem cần giữ lại hay huỷ một số tài nguyên nhất định khi sử dụng tính năng rút gọn tài nguyên.
Để bật tính năng rút gọn tài nguyên, hãy thiết lập thuộc tính shrinkResources
thành true
trong tệp build.gradle
(cùng với minifyEnabled
để bật tính năng rút gọn mã).
Ví dụ:
Groovy
android { ... buildTypes { release { shrinkResources true minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } }
Kotlin
android { ... buildTypes { getByName("release") { isShrinkResources = true isMinifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" ) } } }
tools:shrinkMode
Dành cho: <resources>
Được dùng bởi: Công cụ xây dựng có tính năng rút gọn tài nguyên
Thông qua thuộc tính này, bạn có thể chỉ định xem các công cụ xây dựng có nên áp dụng những chế độ sau đây hay không:
- Chế độ an toàn: Giữ lại tất cả tài nguyên được trích dẫn rõ ràng và có thể được tham chiếu động bằng một lệnh gọi đến
Resources.getIdentifier()
. - Chế độ nghiêm ngặt: Chỉ giữ lại các tài nguyên được trích dẫn rõ ràng trong mã hoặc trong các tài nguyên khác.
Tuỳ chọn mặc định là sử dụng chế độ an toàn (shrinkMode="safe"
). Để sử dụng chế độ nghiêm ngặt, hãy thêm shrinkMode="strict"
vào thẻ <resources>
như minh hoạ dưới đây:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:shrinkMode="strict" />
Khi bật chế độ nghiêm ngặt, bạn có thể phải sử dụng tools:keep
để giữ lại tài nguyên đã bị xoá mà bạn thực sự cần đến, cũng như sử dụng tools:discard
để xoá nhiều tài nguyên hơn nữa.
Để biết thêm thông tin, hãy xem phần Rút gọn tài nguyên của bạn.
tools:keep
Dành cho: <resources>
Được dùng bởi: Công cụ xây dựng có tính năng rút gọn tài nguyên
Khi sử dụng tính năng rút gọn tài nguyên để xoá các tài nguyên không sử dụng, thuộc tính này cho phép bạn chỉ định các tài nguyên cần giữ lại (thường là vì chúng được tham chiếu theo cách gián tiếp trong thời gian chạy, chẳng hạn như bằng cách truyền tên tài nguyên đã tạo đến Resources.getIdentifier()
một cách linh động).
Để sử dụng, hãy tạo tệp XML trong thư mục tài nguyên của bạn (ví dụ: tại res/raw/keep.xml
) với thẻ <resources>
và chỉ định từng tài nguyên cần giữ lại trong tools:keep
ở dạng danh sách được phân tách bằng dấu phẩy. Bạn có thể sử dụng ký tự dấu hoa thị làm ký tự đại diện.
Ví dụ:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@layout/used_1,@layout/used_2,@layout/*_3" />
Để biết thêm thông tin, hãy xem phần Rút gọn tài nguyên của bạn.
tools:discard
Dành cho: <resources>
Được dùng bởi: Công cụ xây dựng có tính năng rút gọn tài nguyên
Khi sử dụng tính năng rút gọn tài nguyên để loại bỏ các tài nguyên không sử dụng, thuộc tính này cho phép bạn chỉ định các tài nguyên mà bạn muốn loại bỏ theo cách thủ công (thường là do tài nguyên được tham chiếu nhưng theo một cách không ảnh hưởng đến ứng dụng của bạn hoặc vì trình bổ trợ Gradle đã suy luận sai rằng tài nguyên đó được tham chiếu).
Để sử dụng, hãy tạo tệp XML trong thư mục tài nguyên của bạn (ví dụ: tại res/raw/keep.xml
) với thẻ <resources>
và chỉ định từng tài nguyên cần giữ lại trong tools:discard
ở dạng danh sách được phân tách bằng dấu phẩy. Bạn có thể sử dụng ký tự dấu hoa thị làm ký tự đại diện.
Ví dụ:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:discard="@layout/unused_1" />
Để biết thêm thông tin, hãy xem phần Rút gọn tài nguyên của bạn.