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