Tham chiếu thuộc tính công cụ

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 phân đoạn) hoặc hành vi 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ụ xây dựng sẽ xóa các thuộc tính này để không ả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" >

Lỗi khi xử lý các thuộc tính

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: Phần tử bất kỳ

Được sử dụng bởi: Lint (Tìm lỗi mã nguồn)

Thuộc tính này chấp nhận danh sách mã sự cố tìm lỗi mã nguồn được phân tách bằng dấu phẩy mà bạn muốn các công cụ bỏ qua trên phần tử này hoặc bất kỳ phần tử con 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: Phần tử bất kỳ

Được sử dụng bởi: Lint (Tìm lỗi mã nguồn)

Thuộc tính này hoạt động giống như chú thích @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 cho 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 lint (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ể sử dụng bố cục này vì GridLayout chỉ có trên API cấp 14 trở lên, nhưng bạn biết rằng bố cục này không được sử dụng cho các 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, thay vào đó, bạn nên sử dụng GridLayout trong thư viện hỗ trợ.

tools:locale

Dành cho: <resources>

Được sử dụng bởi: Lint, 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ữ/khu vực mặc định cho các tài nguyên trong phần tử <resources> nhất định (vì nếu không các công cụ sẽ giả định là tiếng Anh) để tránh cảnh báo từ trình kiểm tra chính tả. 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 mã này vào tệp values/strings.xml (giá trị chuỗi mặc định) để biểu thị rằng ngôn ngữ dùng cho các chuỗi mặc định là tiếng Tây Ban Nha thay vì tiếng Anh:

<resources xmlns:tools="http://schemas.android.com/tools"
    tools:locale="es">

Thuộc tính chế độ xem 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 sử dụng bởi: Trình chỉnh sửa bố cục 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, nhưng bạn muốn xem hiệu ứng trước trong bản xem trước bố cục.

Ví dụ: nếu bạn đặ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 mặc định, thì bạn có thể thêm tools:text để ghi rõ một số văn bản chỉ nhằm mục đích xem trước bố cục.

Hình 1. Thuộc tính 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 sử 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 chế độ xem trước bố cục).

Bạn cũng có thể sử dụng thuộc tính tools: để hủy một thuộc tính chỉ dành cho bản xem trước bố cục. Ví dụ: nếu bạn có FrameLayout có nhiều thành phần con nhưng chỉ muốn xem một thành phần con trong bản xem trước bố cục, 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 (Trình chỉnh sửa bố cục) trong chế độ xem bản thiết kế, cửa sổ Properties (Thuộc tính) cũng cho phép bạn chỉnh sửa một số thuộc tính của chế độ xem 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ó cùng tên.

tools:context

Dành cho: Bất kỳ <View> gốc nào

Được sử dụng bởi: Lint, trình chỉnh sửa bố cục 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 phải biết thông tin về hoạt động, chẳng hạn như chủ đề bố cục cần phải có trong bản xem trước và vị trí cần chèn trình xử lý onClick khi bạn thực hiện các thao tác đó từ tính năng sửa nhanh (hình 2).

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

Bạn có thể chỉ định tên class (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 (ngoại trừ 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" >

Mẹo: Bạn cũng có thể chọn chủ đề cho bản xem trước bố cục từ thanh công cụ Layout Editor.

tools:itemCount

Dành cho: <RecyclerView>

Được sử dụng bởi: Trình chỉnh sửa bố cục 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à trình chỉnh sửa bố cục cần hiển thị trong cửa sổ Preview (Xem trước).

Ví dụ:

<android.support.v7.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 sử dụng bởi: Trình chỉnh sửa bố cục 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 phân đoạn (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 sử dụng bởi: Trình chỉnh sửa bố cục 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 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: Bất kỳ <View> gốc nào trong một bố cục được một <include> tham chiếu

Được sử dụng bởi: Trình chỉnh sửa bố cục Android Studio

Thuộc tính này cho phép bạn trỏ đến một bố cục sử dụng bố cục này làm thành phần bao gồm, để bạn có thể xem trước (và chỉnh sửa) tệp này khi nó xuất hiện trong quá trình được nhúng vào bố cục này.

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: Bất kỳ <View> gốc nào

Được sử dụng bởi: Trình chỉnh sửa bố cục Android Studio

Thuộc tính này chỉ định trình đơn mà bản xem trước bố cục cần 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ó phần mở rộng .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 sử dụng bởi: Trình chỉnh sửa bố cục Android Studio

Các thuộc tính này đặt giá trị tối thiểu và tối đa cho chế độ xem 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 sử dụng bởi: Trình chỉnh sửa bố cục Android Studio

Thuộc tính này cho phép bạn mở DrawerLayout trong ngăn Preview (Xem trước) của trình chỉnh sửa bố cục. Bạn cũng có thể sửa đổi cách trình chỉnh sửa bố cục hiển thị bố cục bằng cách truyền một trong các giá trị sau:

Hằng sốGiá trịMô tả
end800005Đẩy đối tượng đến cuối vùng chứa, không thay đổi kích thước của đối tượng.
left3Đẩy đối tượng sang bên trái vùng chứa, không thay đổi kích thước của đối tượng.
right5Đẩy đối tượng sang bên phải vùng chứa, không thay đổi kích thước của đối tượng.
start800003Đẩ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ụ:

<android.support.v4.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: Bất kỳ chế độ xem nào hỗ trợ hình ảnh hoặc văn bản giao diện người dùng.

Được sử dụng bởi: Trình chỉnh sửa bố cục 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 chế độ xem của mình. Ví dụ: nếu bạn muốn kiểm tra cách bố cục hoạt động với văn bản, nhưng chưa có văn bản giao diện người dùng hoàn thiện cho ứng dụng của mình, 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.

Giá trị thuộc tínhMô tả dữ liệu giữ chỗ
@tools:sample/full_names Tên đầy đủ được tạo ngẫu nhiên từ tổ hợp @tools:sample/first_names@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 toàn 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ắt nguồn từ tiếng Latinh.
@tools:sample/date/day_of_week Ngày và giờ ngẫu nhiên theo định dạng đã chỉ định.
@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 hủy 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 đặt thuộc tính shrinkResources thành true trong tệp build.gradle của bạn (cùng với minifyEnabled để 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") {
            shrinkResources = true
            minifyEnabled = true
            proguardFiles(
                getDefaultProguardFile("proguard-android.txt"),
                "proguard-rules.pro"
            )
        }
    }
}

tools:shrinkMode

Dành cho: <resources>

Được sử dụng bởi: Công cụ xây dựng có tính năng rút gọn tài nguyên

Thuộc tính này cho phép bạn chỉ định xem các công cụ xây dựng nên sử dụng "safe mode (chế độ an toàn)" (duy trì an toàn và để tất cả các tài nguyên được trích dẫn rõ ràng đồng thời có thể được tham chiếu linh động bằng cách gọi Resources.getIdentifier()) hay "strict mode (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).

Tùy 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 họa 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ụngtools:keep để giữ lại tài nguyên đã bị xóa nhưng bạn thực sự cần đến và sử dụng tools:discard để xóa 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 sử 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 để xóa 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 theo 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 sử 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 theo 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.