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

แนวคิดและการใช้งาน 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" >

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

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

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 รายการ แต่ต้องการดูเฉพาะองค์ประกอบย่อย 1 รายการในการแสดงตัวอย่างเลย์เอาต์ คุณสามารถตั้งค่าให้องค์ประกอบย่อยรายการใดรายการหนึ่ง ไม่แสดงในการแสดงตัวอย่างเลย์เอาต์ได้ ดังที่แสดงที่นี่

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

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

Quickfix
    สำหรับแอตทริบิวต์ 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 Layout Editor

สำหรับ 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 เนื่องจากตัวอย่างเลย์เอาต์ไม่สามารถเรียกใช้ โค้ดกิจกรรมที่ใช้เลย์เอาต์ตามปกติได้

เช่น

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

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