Android 8.0 (API ระดับ 26) มีแบบอักษรใน XML ซึ่งเป็นฟีเจอร์ที่ช่วยให้คุณใช้แบบอักษรเป็นทรัพยากรได้ คุณเพิ่มไฟล์ font
ในโฟลเดอร์ res/font/
เพื่อรวมแบบอักษรเป็นทรัพยากรได้ ระบบจะคอมไพล์แบบอักษรเหล่านี้ในไฟล์ R
และแบบอักษรจะพร้อมใช้งานใน Android Studio โดยอัตโนมัติ คุณสามารถเข้าถึงแหล่งข้อมูลแบบอักษรได้โดยใช้ประเภททรัพยากร font
เช่น หากต้องการเข้าถึงทรัพยากรของแบบอักษร ให้ใช้ @font/myfont
หรือ R.font.myfont
หากต้องการใช้ฟีเจอร์แบบอักษรใน XML บนอุปกรณ์ที่ใช้ Android 4.1 (API ระดับ 16) ขึ้นไป ให้ใช้ Support Library 26.0 ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้คลังการสนับสนุนได้ที่ส่วนใช้คลังการสนับสนุน
หากต้องการเพิ่มแบบอักษรเป็นทรัพยากร ให้ทำตามขั้นตอนต่อไปนี้ใน Android Studio
- คลิกขวาที่โฟลเดอร์ res แล้วไปที่ใหม่ > ไดเรกทอรีทรัพยากร Android หน้าต่าง New Resource Directory จะปรากฏขึ้น
- ในรายการประเภททรัพยากร ให้เลือกแบบอักษร แล้วคลิกตกลง
หมายเหตุ: ชื่อของไดเรกทอรีทรัพยากรต้องเป็นแบบอักษร
- เพิ่มไฟล์แบบอักษรในโฟลเดอร์
font
โครงสร้างโฟลเดอร์ด้านล่างจะสร้าง
R.font.dancing_script
,R.font.lobster
และR.font.typo_graphica
- ดับเบิลคลิกไฟล์แบบอักษรเพื่อดูตัวอย่างแบบอักษรของไฟล์ในตัวแก้ไข
สร้างชุดแบบอักษร
ชุดแบบอักษรคือชุดไฟล์แบบอักษรพร้อมรายละเอียดสไตล์และน้ำหนัก ใน Android คุณสามารถสร้างชุดแบบอักษรใหม่เป็นทรัพยากร XML และเข้าถึงชุดแบบอักษรดังกล่าวเป็นหน่วยเดียวแทนการอ้างอิงสไตล์และน้ำหนักแต่ละรายการเป็นทรัพยากรแยกต่างหาก ซึ่งจะเป็นการอนุญาตให้ระบบเลือกแบบอักษรที่ถูกต้องตามสไตล์ข้อความที่คุณใช้
หากต้องการสร้างแบบอักษร ให้ทำตามขั้นตอนต่อไปนี้ใน Android Studio
- คลิกขวาที่โฟลเดอร์
font
แล้วเลือกใหม่ > ไฟล์ทรัพยากรแบบอักษร หน้าต่างไฟล์ทรัพยากรใหม่จะปรากฏขึ้น - ป้อนชื่อไฟล์ แล้วคลิกตกลง XML แหล่งข้อมูลแบบอักษรใหม่จะเปิดขึ้นในเครื่องมือแก้ไข
- ใส่แอตทริบิวต์ไฟล์แบบอักษร รูปแบบ และน้ำหนักแต่ละรายการไว้ในองค์ประกอบ
<font>
XML ต่อไปนี้แสดงการเพิ่มแอตทริบิวต์ที่เกี่ยวข้องกับแบบอักษรใน XML ของทรัพยากรแบบอักษร<?xml version="1.0" encoding="utf-8"?> <font-family xmlns:android="http://schemas.android.com/apk/res/android"> <font android:fontStyle="normal" android:fontWeight="400" android:font="@font/lobster_regular" /> <font android:fontStyle="italic" android:fontWeight="400" android:font="@font/lobster_italic" /> </font-family>
ใช้แบบอักษรในเลย์เอาต์ XML
ใช้แบบอักษรของคุณทั้งไฟล์แบบอักษรไฟล์เดียวหรือแบบอักษรจากชุดแบบอักษรในออบเจ็กต์ TextView
หรือแบบตามสไตล์โดยใช้แอตทริบิวต์ fontFamily
หมายเหตุ: เมื่อคุณใช้ชุดแบบอักษร TextView
จะเปิดขึ้นเองตามความจำเป็นเพื่อใช้ไฟล์แบบอักษรจากชุดนั้น
เพิ่มแบบอักษรลงใน TextView
หากต้องการตั้งค่าแบบอักษรสำหรับ TextView
ให้ทำอย่างใดอย่างหนึ่งต่อไปนี้
- ในไฟล์ XML ของเลย์เอาต์ ให้ตั้งค่าแอตทริบิวต์
fontFamily
เป็นไฟล์แบบอักษรที่ต้องการเข้าถึง<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/lobster"/>
- เปิดหน้าต่างคุณสมบัติเพื่อตั้งค่าแบบอักษรสำหรับ
TextView
- เลือกมุมมองเพื่อเปิดหน้าต่างพร็อพเพอร์ตี้
หมายเหตุ: หน้าต่างพร็อพเพอร์ตี้จะพร้อมใช้งานก็ต่อเมื่อเครื่องมือแก้ไขการออกแบบเปิดอยู่เท่านั้น เลือกแท็บออกแบบที่ด้านล่างของหน้าต่าง
- ขยายพร็อพเพอร์ตี้ textAppearance แล้วเลือกแบบอักษรจากรายการ fontFamily
- เลือกมุมมองเพื่อเปิดหน้าต่างพร็อพเพอร์ตี้
ตัวอย่างเลย์เอาต์ Android Studio ที่แสดงในแผงด้านขวาสุดในรูปที่ 5 ช่วยให้คุณดูตัวอย่างแบบอักษรที่ตั้งค่าไว้ใน TextView
ได้
เพิ่มแบบอักษรให้กับรูปแบบ
เปิดไฟล์ styles.xml
แล้วตั้งค่าแอตทริบิวต์ fontFamily
ให้กับไฟล์แบบอักษรที่ต้องการเข้าถึง
<style name="customfontstyle" parent="@android:style/TextAppearance.Small"> <item name="android:fontFamily">@font/lobster</item> </style>
ใช้แบบอักษรแบบเป็นโปรแกรม
หากต้องการเรียกข้อมูลแบบอักษรแบบเป็นโปรแกรม ให้เรียกใช้เมธอด getFont(int)
และระบุตัวระบุทรัพยากรของแบบอักษรที่ต้องการเรียกข้อมูล เมธอดนี้จะแสดงผลออบเจ็กต์ Typeface
แม้ว่าระบบจะเลือกรูปแบบที่ดีที่สุดให้คุณจากข้อมูลแบบอักษร แต่คุณก็ใช้วิธี setTypeface(android.graphics.Typeface, int)
ในการตั้งค่าแบบอักษรที่มีรูปแบบที่เฉพาะเจาะจงได้
หมายเหตุ: TextView
ดำเนินการดังกล่าวให้คุณ
Kotlin
val typeface = resources.getFont(R.font.myfont) textView.typeface = typeface
Java
Typeface typeface = getResources().getFont(R.font.myfont); textView.setTypeface(typeface);
ใช้ไลบรารีการสนับสนุน
Support Library 26.0 รองรับแบบอักษรใน XML ในอุปกรณ์ที่ใช้ Android 4.1 (API ระดับ 16) ขึ้นไป
หมายเหตุ: เมื่อประกาศชุดแบบอักษรในเลย์เอาต์ XML ผ่านไลบรารีสนับสนุน ให้ใช้เนมสเปซ app เพื่อให้แน่ใจว่าแบบอักษรจะโหลด
<?xml version="1.0" encoding="utf-8"?> <font-family xmlns:app="http://schemas.android.com/apk/res-auto"> <font app:fontStyle="normal" app:fontWeight="400" app:font="@font/myfont-Regular"/> <font app:fontStyle="italic" app:fontWeight="400" app:font="@font/myfont-Italic" /> </font-family>
หากต้องการเรียกข้อมูลแบบอักษรแบบเป็นโปรแกรม ให้เรียกใช้เมธอด ResourceCompat.getFont(Context, int)
และระบุอินสแตนซ์ของ Context
และตัวระบุทรัพยากร
Kotlin
val typeface = ResourcesCompat.getFont(context, R.font.myfont)
Java
Typeface typeface = ResourcesCompat.getFont(context, R.font.myfont);