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

แนวคิดและการใช้งาน Jetpack Compose

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

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

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

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

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

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 จากไลบรารีสนับสนุนแทน)

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

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

tools: จากเดิม android:

เหมาะสำหรับ: <View>

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

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

ตัวอย่างเช่น หากตั้งค่าแอตทริบิวต์ android:text ไว้ที่รันไทม์ หรือคุณต้องการดูเลย์เอาต์ที่มีค่าแตกต่างจากค่าเริ่มต้น คุณสามารถเพิ่ม tools: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

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

การแก้ไขด่วนสำหรับแอตทริบิวต์ onClick จะทำงานก็ต่อเมื่อคุณตั้งค่า tools:context ไว้เท่านั้น
รูปที่ 2 การแก้ไขด่วนสำหรับแอตทริบิวต์ 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

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

เช่น

<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 ในตัวอย่างได้

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

ตารางที่ 1 ค่าเพื่อแก้ไขวิธีที่ Layout Editor แสดงผล 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

แอตทริบิวต์นี้ช่วยให้คุณแทรกข้อมูลหรือรูปภาพตัวยึดตำแหน่งลงในมุมมองได้ ตัวอย่างเช่น หากต้องการทดสอบลักษณะการทำงานของเลย์เอาต์กับข้อความก่อนที่จะสรุปข้อความ 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 Vector Drawable ที่คุณใช้เป็นรูปโปรไฟล์ได้
@tools:sample/backgrounds/scenic รูปภาพที่คุณใช้เป็นพื้นหลังได้