Android 8.0 (ระดับ API 26) มีฟีเจอร์แบบอักษรใน XML ซึ่งช่วยให้คุณใช้แบบอักษรเป็นทรัพยากรได้ คุณสามารถเพิ่มไฟล์ font ใน
โฟลเดอร์ res/font/ เพื่อรวมแบบอักษรเป็นทรัพยากร ระบบจะคอมไพล์แบบอักษรเหล่านี้
ในไฟล์ R และพร้อมใช้งานใน
Android Studio โดยอัตโนมัติ คุณสามารถเข้าถึงทรัพยากรแบบอักษรได้โดยใช้ประเภททรัพยากร font เช่น หากต้องการเข้าถึงทรัพยากรแบบอักษร ให้ใช้ @font/myfont หรือ R.font.myfont
หากต้องการใช้ฟีเจอร์แบบอักษรใน XML ในอุปกรณ์ที่ใช้ Android 4.1 (ระดับ API 16) ขึ้นไป ให้ใช้ไลบรารีการสนับสนุน 26.0 ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ไลบรารีการสนับสนุนได้ที่ส่วน ใช้ไลบรารีการสนับสนุน
หากต้องการเพิ่มแบบอักษรเป็นทรัพยากร ให้ทำตามขั้นตอนต่อไปนี้ใน Android Studio:
- คลิกขวาที่โฟลเดอร์ res แล้วไปที่ ใหม่ > ไดเรกทอรีทรัพยากร Android หน้าต่าง ไดเรกทอรีทรัพยากรใหม่ จะปรากฏขึ้น
- เลือกแบบอักษร ในรายการประเภททรัพยากร แล้วคลิก
ตกลง
หมายเหตุ: ชื่อของไดเรกทอรีทรัพยากรต้องเป็น font
รูปที่ 1 การเพิ่มไดเรกทอรีทรัพยากรแบบอักษร
- เพิ่มไฟล์แบบอักษรในโฟลเดอร์
fontโครงสร้างโฟลเดอร์ด้านล่างจะสร้าง
R.font.dancing_script,R.font.lobsterและR.font.typo_graphica
รูปที่ 2 การเพิ่มไฟล์แบบอักษรในไดเรกทอรี
res/font - ดับเบิลคลิกไฟล์แบบอักษรเพื่อแสดงตัวอย่างแบบอักษรของไฟล์ในเครื่องมือแก้ไข
รูปที่ 3 การแสดงตัวอย่างไฟล์แบบอักษร
สร้างชุดแบบอักษร
ชุดแบบอักษรคือชุดไฟล์แบบอักษรพร้อมรายละเอียดสไตล์และความหนา ใน 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
-
รูปที่ 4 การเลือกแบบอักษรจากหน้าต่างพร็อพเพอร์ตี้
- เลือกมุมมองเพื่อเปิดหน้าต่างพร็อพเพอร์ตี้
การแสดงตัวอย่างเลย์เอาต์ของ Android Studio ซึ่งแสดงในบานหน้าต่างด้านขวาสุดในรูปที่ 5,
ช่วยให้คุณแสดงตัวอย่างแบบอักษรที่ตั้งค่าไว้ใน TextView ได้
รูปที่ 5 การแสดงตัวอย่างแบบอักษรในการแสดงตัวอย่างเลย์เอาต์
เพิ่มแบบอักษรลงในสไตล์
เปิดไฟล์ 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)
เมธอดเพื่อตั้งค่า Typeface ด้วยสไตล์ที่เฉพาะเจาะจงได้
หมายเหตุ: TextView
จะจัดการให้คุณ
Kotlin
val typeface = resources.getFont(R.font.myfont) textView.typeface = typeface
Java
Typeface typeface = getResources().getFont(R.font.myfont); textView.setTypeface(typeface);
ใช้ไลบรารีการสนับสนุน
ไลบรารีการสนับสนุน 26.0 รองรับแบบอักษรใน XML ในอุปกรณ์ที่ใช้ Android 4.1 (ระดับ API 16) ขึ้นไป
หมายเหตุ: เมื่อประกาศชุดแบบอักษรในเลย์เอาต์ XML ผ่าน Support Library ให้ใช้เนมสเปซ 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);