ข้อมูลอ้างอิงแอตทริบิวต์ของเครื่องมือ

Android Studio รองรับแอตทริบิวต์ XML ที่หลากหลายในเนมสเปซ tools ที่เปิดใช้ฟีเจอร์เวลาออกแบบ เช่น เลย์เอาต์ที่จะแสดงเป็นส่วนย่อย หรือ ลักษณะการทำงานของเวลาคอมไพล์ เช่น โหมดย่อขนาดใดที่จะใช้กับ XML ที่ไม่ซับซ้อน เมื่อคุณสร้างแอป เครื่องมือสร้างแอปจะนำแอตทริบิวต์เหล่านี้ออก ว่าไม่ส่งผลต่อขนาดของ APK หรือลักษณะรันไทม์

หากต้องการใช้แอตทริบิวต์เหล่านี้ ให้เพิ่มเนมสเปซ tools ลงในองค์ประกอบรูทของแต่ละรายการ ไฟล์ XML ที่คุณต้องการใช้ ตามที่แสดงอยู่ที่นี่

<RootTag xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" >

แอตทริบิวต์การจัดการข้อผิดพลาด

แอตทริบิวต์ต่อไปนี้จะช่วยระงับข้อความเตือนของ Lint

tools:ignore

ใช้สำหรับ: องค์ประกอบใดก็ได้

ใช้โดย: Lint

แอตทริบิวต์นี้ยอมรับรายการรหัสปัญหาของ Lint ที่คั่นด้วยเครื่องหมายจุลภาคที่คุณต้องการ เครื่องมือที่จะละเว้นในองค์ประกอบนี้หรือองค์ประกอบสืบทอด

เช่น คุณสามารถกำหนดให้เครื่องมือละเว้นข้อผิดพลาด MissingTranslation

<string name="show_all_apps" tools:ignore="MissingTranslation">All</string>

tools:targetApi

ใช้สำหรับ: องค์ประกอบใดๆ

ใช้โดย: Lint

แอตทริบิวต์นี้ทำงานเหมือนกับ คำอธิบายประกอบ @TargetApi ใน Java โค้ด ซึ่งจะช่วยให้คุณระบุระดับ API ได้ (เป็นจำนวนเต็มหรือเป็นชื่อโค้ด) ที่สนับสนุนองค์ประกอบนี้

การดำเนินการนี้จะบอกเครื่องมือที่คุณเชื่อว่าองค์ประกอบนี้และองค์ประกอบย่อยต่างๆ ใช้เฉพาะในระดับ API ที่ระบุหรือสูงกว่า การดำเนินการนี้จะหยุด Lint ไม่ให้แจ้งเตือนคุณ หากองค์ประกอบนั้นหรือแอตทริบิวต์ขององค์ประกอบไม่พร้อมใช้งานในระดับ API ที่คุณระบุ ในชื่อ minSdkVersion

ตัวอย่างเช่น คุณอาจใช้แอตทริบิวต์นี้เนื่องจาก GridLayout มีให้บริการใน API ระดับ 14 ขึ้นไป แต่คุณทราบว่าไม่มีการใช้รูปแบบนี้ในโค้ดของคุณ สำหรับเวอร์ชันที่ต่ำกว่า

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:targetApi="14" >

(อย่างไรก็ตาม โปรดทราบว่าเราขอแนะนำให้ใช้ GridLayout จากไลบรารีการสนับสนุนแทน)

tools:locale

มีไว้สำหรับ <resources>

ใช้โดย: Lint, เอดิเตอร์ของ Android Studio

ส่วนนี้ทำให้เครื่องมือทราบถึงภาษาหรือสถานที่เริ่มต้นสำหรับทรัพยากรใน เอลิเมนต์ <resources> ที่ระบุเพื่อหลีกเลี่ยงคำเตือนจากโปรแกรมตรวจตัวสะกด มิเช่นนั้น เครื่องมือจะถือว่าภาษาดังกล่าวเป็นภาษาอังกฤษ

ค่าต้องเป็นภาษาที่ถูกต้อง

เช่น คุณสามารถเพิ่มไฟล์นี้ลงในไฟล์ values/strings.xml เริ่มต้นเพื่อ ระบุว่าภาษาที่ใช้สำหรับสตริงเริ่มต้นคือ ภาษาสเปนแทนภาษาอังกฤษ:

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

แอตทริบิวต์มุมมองเวลาออกแบบ

แอตทริบิวต์ต่อไปนี้กำหนดลักษณะของเลย์เอาต์ที่มองเห็นได้ ในตัวอย่างเลย์เอาต์ของ Android Studio เท่านั้น

tools: จากราคาเต็ม android:

มีไว้สำหรับ <View>

ใช้โดย: เครื่องมือแก้ไขเลย์เอาต์ของ Android Studio

คุณแทรกข้อมูลตัวอย่างในตัวอย่างเลย์เอาต์ได้โดยใช้คำนำหน้า tools: แทนที่จะเป็น android: ด้วยแอตทริบิวต์ <View> จากเฟรมเวิร์ก Android วิธีนี้มีประโยชน์เมื่อไม่ได้ป้อนข้อมูลค่าของแอตทริบิวต์จนถึงรันไทม์และคุณ ต้องการดูเอฟเฟกต์ในตัวอย่างเลย์เอาต์ได้ด้วย

ตัวอย่างเช่น หากกำหนดค่าแอตทริบิวต์ android:text ขณะรันไทม์ หรือคุณต้องการ เพื่อดูเค้าโครงที่มีค่าแตกต่างจากค่าเริ่มต้น คุณสามารถเพิ่ม tools:text เพื่อระบุข้อความสำหรับตัวอย่างเลย์เอาต์เท่านั้น

วันที่ แอตทริบิวต์เครื่องมือ:ข้อความ จะตั้งค่า Google Voice เป็นค่าสำหรับการออกแบบ
      ตัวอย่าง
รูปที่ 1 tools:text ชุดแอตทริบิวต์ "Google Voice" เป็นค่าสำหรับตัวอย่างเลย์เอาต์

คุณเพิ่มได้ทั้งแอตทริบิวต์เนมสเปซ android: ซึ่งใช้ที่ และแอตทริบิวต์ tools: ที่ตรงกัน ซึ่งจะลบล้างรันไทม์ ในตัวอย่างเลย์เอาต์เท่านั้น

คุณยังใช้แอตทริบิวต์ tools: เพื่อยกเลิกการตั้งค่าแอตทริบิวต์สำหรับแอตทริบิวต์ ตัวอย่างเลย์เอาต์เท่านั้น เช่น หากคุณมี FrameLayout ที่มีบุตรหลาน 2 คน แต่คุณต้องการเห็นเพียงลูกเดียวในตัวอย่างเลย์เอาต์ คุณสามารถตั้งค่า ไม่แสดงในตัวอย่างเลย์เอาต์ ดังตัวอย่างนี้

<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"  />

เมื่อใช้เครื่องมือแก้ไขการออกแบบใน มุมมองการออกแบบ หน้าต่างคุณสมบัติจะช่วยให้คุณแก้ไขเวลาออกแบบได้ ดูแอตทริบิวต์ แอตทริบิวต์เวลาออกแบบแต่ละรายการจะระบุด้วย ไอคอนเครื่องมือ ประแจ
ไอคอน ที่อยู่ติดกับ เพื่อแยกความแตกต่างจากแอตทริบิวต์จริงที่มีชื่อเดียวกัน

tools:context

ใช้สำหรับ: รูท <View> ใดก็ได้

ใช้โดย: Lint, Android Studio Layout ผู้แก้ไข

แอตทริบิวต์นี้ประกาศว่าเลย์เอาต์นี้เชื่อมโยงกับกิจกรรมใด "ค่าเริ่มต้น" การดำเนินการนี้จะเปิดใช้ฟีเจอร์ในเครื่องมือแก้ไขหรือตัวอย่างเลย์เอาต์ที่ต้องใช้ ข้อมูลเกี่ยวกับกิจกรรมนั้นๆ เช่น มีธีมของเลย์เอาต์อย่างไรใน ตัวอย่างและตำแหน่งที่จะแทรกเครื่องจัดการ onClick ที่สร้างจาก ด่วน ดังที่แสดงในรูปที่ 2

วันที่ การแก้ไขด่วน
    สำหรับแอตทริบิวต์ onClick จะทำงานก็ต่อเมื่อคุณได้ตั้งค่าเครื่องมือ:บริบท
รูปที่ 2 Quickfix สำหรับ onClick จะใช้ได้ต่อเมื่อคุณตั้งค่า tools:context ไว้

คุณสามารถระบุชื่อคลาสกิจกรรมโดยใช้คำนำหน้าจุดเหมือนกับใน ไฟล์ Manifest (ไม่รวมชื่อแพ็กเกจแบบเต็ม)

เช่น

<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

มีไว้สำหรับ <RecyclerView>

ใช้โดย: Android Studio Layout ผู้แก้ไข

สำหรับ RecyclerView ที่ระบุ แอตทริบิวต์นี้ระบุจำนวนสินค้า เครื่องมือแก้ไขการออกแบบควรแสดงผลใน หน้าต่างแสดงตัวอย่าง

เช่น

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:itemCount="3"/>

tools:layout

มีไว้สำหรับ <fragment>

ใช้โดย: เครื่องมือแก้ไขเลย์เอาต์ของ Android Studio

แอตทริบิวต์นี้ประกาศเลย์เอาต์ที่คุณต้องการให้แสดงตัวอย่างเลย์เอาต์ภายใน เนื่องจากการแสดงตัวอย่างเลย์เอาต์ไม่สามารถดำเนินการกับ รหัสกิจกรรมที่โดยปกติแล้วจะใช้การออกแบบ

เช่น

<fragment android:name="com.example.main.ItemListFragment"
    tools:layout="@layout/list_content" />

tools:listitem, tools:listheader, tools:listfooter

มีไว้สำหรับ <AdapterView> (และคลาสย่อย เช่น <ListView>)

ใช้โดย: เครื่องมือแก้ไขเลย์เอาต์ของ Android Studio

แอตทริบิวต์เหล่านี้ระบุเลย์เอาต์ที่จะแสดงในตัวอย่างเลย์เอาต์สำหรับรายการ รายการ ส่วนหัว และส่วนท้าย ช่องข้อมูลใดๆ ในเลย์เอาต์จะเติมด้วย เนื้อหาที่เป็นตัวเลข เช่น "รายการที่ 1" เพื่อไม่ให้รายการซ้ำ

เช่น

<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

ใช้สำหรับ: รูท <View> ในเลย์เอาต์ที่การเรียก <include>

ใช้โดย: เครื่องมือแก้ไขเลย์เอาต์ของ Android Studio

แอตทริบิวต์นี้ช่วยให้คุณชี้ไปยังเลย์เอาต์ที่ใช้เลย์เอาต์นี้ได้ โดยใช้ <include> เพื่อให้คุณ ดูตัวอย่างและแก้ไขไฟล์นี้ตามที่ปรากฏขณะฝังอยู่ในเลย์เอาต์ระดับบนสุด

เช่น

<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" />

ตอนนี้ตัวอย่างเลย์เอาต์จะแสดงเลย์เอาต์ TextView นี้ตามที่ปรากฏใน activity_main

tools:menu

ใช้สำหรับ: รูท <View> ใดก็ได้

ใช้โดย: เครื่องมือแก้ไขเลย์เอาต์ของ Android Studio

แอตทริบิวต์นี้ระบุเมนูที่ตัวอย่างเลย์เอาต์จะแสดงใน แถบแอป ค่าคือรหัสเมนูอย่างน้อย 1 รายการ คั่นด้วยเครื่องหมายจุลภาค โดยไม่มี @menu/ หรือคำนำหน้ารหัสดังกล่าว และไม่มี ส่วนขยาย .xml

เช่น

<?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

มีไว้สำหรับ <NumberPicker>

ใช้โดย: เครื่องมือแก้ไขเลย์เอาต์ของ Android Studio

แอตทริบิวต์เหล่านี้กำหนดค่าต่ำสุดและสูงสุดสำหรับแอตทริบิวต์ ยอดดู NumberPicker ครั้ง

เช่น

<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

มีไว้สำหรับ <DrawerLayout>

ใช้โดย: เครื่องมือแก้ไขเลย์เอาต์ของ Android Studio

แอตทริบิวต์นี้ช่วยให้คุณเปิด DrawerLayoutในตัวอย่าง

คุณยังสามารถแก้ไขวิธีแสดงผลเลย์เอาต์โดย ส่งค่าใดค่าหนึ่งต่อไปนี้

ตาราง 1 ค่าที่จะปรับเปลี่ยนวิธี เครื่องมือแก้ไขการออกแบบจะแสดง DrawerLayout

ค่าคงที่ค่าคำอธิบาย
end800005ดันวัตถุไปที่จุดสิ้นสุดของคอนเทนเนอร์ โดยไม่เปลี่ยนขนาด
left3ดันวัตถุไปทางซ้ายของคอนเทนเนอร์โดยไม่เปลี่ยนขนาด
right5ดันวัตถุไปทางขวาของคอนเทนเนอร์ โดยไม่เปลี่ยนขนาด
start800003พุชออบเจ็กต์ไปยังจุดเริ่มต้นของคอนเทนเนอร์ โดยไม่เปลี่ยนขนาด

เช่น

<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" />

ทรัพยากร "@tools:sample/*" รายการ

ใช้สำหรับ: มุมมองใดๆ ที่รองรับข้อความหรือรูปภาพ UI

ใช้โดย: Android Studio Layout ผู้แก้ไข

แอตทริบิวต์นี้ช่วยให้คุณแทรกข้อมูลหรือรูปภาพตัวยึดตำแหน่งลงในมุมมองได้ ตัวอย่างเช่น เพื่อทดสอบว่าเลย์เอาต์มีลักษณะเป็นอย่างไรเมื่อเห็นข้อความ คุณได้สรุปข้อความ UI ของแอปแล้ว คุณสามารถใช้ข้อความตัวยึดตำแหน่งเป็น ดังต่อไปนี้:

<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" />

ตารางต่อไปนี้อธิบายประเภทข้อมูลตัวยึดตำแหน่งที่คุณสามารถ แทรกลงในเลย์เอาต์ดังนี้

ตาราง 2 ข้อมูลตัวยึดตำแหน่งสำหรับ เลย์เอาต์

ค่าแอตทริบิวต์คำอธิบายของข้อมูลตัวยึดตำแหน่ง
@tools:sample/full_names ชื่อเต็มที่สร้างขึ้นแบบสุ่มจากชุดค่าผสมของ @tools:sample/first_names และ วันที่ @tools:sample/last_names
@tools:sample/first_names ชื่อทั่วไป
@tools:sample/last_names นามสกุลทั่วไป
@tools:sample/cities ชื่อเมืองจากทั่วโลก
@tools:sample/us_zipcodes รหัสไปรษณีย์ของสหรัฐอเมริกาที่สร้างแบบสุ่ม
@tools:sample/us_phones หมายเลขโทรศัพท์ที่สร้างขึ้นแบบสุ่มซึ่งมีรูปแบบต่อไปนี้ (800) 555-xxxx
@tools:sample/lorem ข้อความตัวยึดตำแหน่งในภาษาละติน
@tools:sample/date/day_of_week วันที่และเวลาแบบสุ่มสำหรับรูปแบบที่ระบุ
@tools:sample/date/ddmmyy
@tools:sample/date/mmddyy
@tools:sample/date/hhmm
@tools:sample/date/hhmmss
@tools:sample/avatars เวกเตอร์ที่ถอนออกได้ซึ่งคุณใช้เป็นรูปโปรไฟล์ของโปรไฟล์ได้
@tools:sample/backgrounds/scenic รูปภาพที่ใช้เป็นพื้นหลังได้

แอตทริบิวต์การย่อทรัพยากร

แอตทริบิวต์ต่อไปนี้ช่วยให้คุณเปิดใช้การตรวจสอบการอ้างอิงที่เข้มงวดและประกาศ ควรเก็บหรือทิ้งทรัพยากรบางรายการเมื่อใช้ การลดขนาดทรัพยากร

หากต้องการเปิดใช้การย่อทรัพยากร ให้ตั้งค่าพร็อพเพอร์ตี้ shrinkResources เป็น true ในไฟล์ build.gradle ข้าง minifyEnabled สำหรับการย่อโค้ด

เช่น

ดึงดูด

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

มีไว้สำหรับ <resources>

ใช้โดย: สร้างเครื่องมือที่ลดขนาดทรัพยากร

แอตทริบิวต์นี้ช่วยให้คุณระบุว่าเครื่องมือบิลด์ควรใช้ ดังต่อไปนี้:

  • โหมดปลอดภัย: ให้เก็บทรัพยากรทั้งหมดที่มีการอ้างอิงอย่างชัดแจ้งและ อาจอ้างอิงแบบไดนามิกโดยใช้การเรียก Resources.getIdentifier()
  • โหมดเข้มงวด: เก็บไว้เฉพาะทรัพยากร ที่มีการอ้างถึงอย่างชัดเจนในโค้ดหรือในแหล่งข้อมูลอื่นๆ

ค่าเริ่มต้นคือการใช้โหมดปลอดภัย (shrinkMode="safe") หากต้องการใช้ โหมดเข้มงวด ให้เพิ่ม shrinkMode="strict" ลงในแท็ก <resources> ดังที่แสดงที่นี่

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:shrinkMode="strict" />

เมื่อเปิดใช้โหมดที่จำกัด คุณอาจต้องใช้ tools:keep เพื่อเก็บทรัพยากรที่นำออกไปแล้วแต่เป็น สิ่งที่คุณต้องการและใช้ tools:discard เพื่อนำทรัพยากรเพิ่มเติมออกอย่างชัดเจน

สำหรับข้อมูลเพิ่มเติม โปรดดู ลดขนาดทรัพยากร

tools:keep

มีไว้สำหรับ <resources>

ใช้โดย: สร้างเครื่องมือที่ลดขนาดทรัพยากร

เมื่อใช้การย่อทรัพยากรเพื่อนำทรัพยากรที่ไม่ได้ใช้ออก ให้คุณระบุทรัพยากรที่จะเก็บไว้ได้ โดยทั่วไปก็เพราะ มีการอ้างอิงโดยอ้อมขณะรันไทม์ เช่น โดยการส่งผ่าน สร้างชื่อทรัพยากรให้กับ Resources.getIdentifier()

หากต้องการใช้งาน ให้สร้างไฟล์ XML ในไดเรกทอรีทรัพยากร (เช่น res/raw/keep.xml) ด้วยแท็ก <resources> และระบุทรัพยากรแต่ละรายการที่จะเก็บไว้ในแอตทริบิวต์ tools:keep เป็น รายการที่คั่นด้วยคอมมา คุณสามารถใช้อักขระดอกจันเป็นอักขระแทน

เช่น

<?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" />

สำหรับข้อมูลเพิ่มเติม โปรดดู ลดขนาดทรัพยากร

tools:discard

มีไว้สำหรับ <resources>

ใช้โดย: สร้างเครื่องมือที่ลดขนาดทรัพยากร

เมื่อใช้การย่อทรัพยากรเพื่อนำทรัพยากรที่ไม่ได้ใช้ออก แอตทริบิวต์นี้ ช่วยให้คุณระบุทรัพยากรที่ต้องการทิ้งด้วยตนเองได้ โดยทั่วไปเป็นเพราะ มีการอ้างอิงทรัพยากรแต่ในลักษณะที่ไม่ส่งผลกระทบต่อแอปหรือ เนื่องจากปลั๊กอิน Gradle อนุมานอย่างไม่ถูกต้องว่าทรัพยากรนั้น มีการอ้างอิงถึง

หากต้องการใช้งาน ให้สร้างไฟล์ XML ในไดเรกทอรีทรัพยากร (เช่น res/raw/keep.xml) ด้วยแท็ก <resources> และระบุทรัพยากรแต่ละรายการที่จะทิ้งในแอตทริบิวต์ tools:discard เป็น รายการที่คั่นด้วยคอมมา คุณสามารถใช้อักขระดอกจันเป็นอักขระแทน

เช่น

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:discard="@layout/unused_1" />

สำหรับข้อมูลเพิ่มเติม โปรดดู ลดขนาดทรัพยากร