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 เป็นค่าสำหรับการออกแบบ
ตัวอย่าง](https://developer.android.com/static/studio/images/write/tools-attribute-text_2x.png?authuser=8&hl=th)
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 จะทำงานก็ต่อเมื่อคุณได้ตั้งค่าเครื่องมือ:บริบท](https://developer.android.com/static/studio/images/write/tools-attribute-context_2x.png?authuser=8&hl=th)
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
ค่าคงที่ | ค่า | คำอธิบาย |
---|---|---|
end | 800005 | ดันวัตถุไปที่จุดสิ้นสุดของคอนเทนเนอร์ โดยไม่เปลี่ยนขนาด |
left | 3 | ดันวัตถุไปทางซ้ายของคอนเทนเนอร์โดยไม่เปลี่ยนขนาด |
right | 5 | ดันวัตถุไปทางขวาของคอนเทนเนอร์ โดยไม่เปลี่ยนขนาด |
start | 800003 | พุชออบเจ็กต์ไปยังจุดเริ่มต้นของคอนเทนเนอร์ โดยไม่เปลี่ยนขนาด |
เช่น
<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" />
สำหรับข้อมูลเพิ่มเติม โปรดดู ลดขนาดทรัพยากร