สำหรับ Android 8.0 (API ระดับ 26) ขึ้นไป คุณสามารถแนะนำ
TextView
เพื่อให้ข้อความแสดงขนาดได้
ขยายหรือย่อโดยอัตโนมัติเพื่อเติมการจัดวางตาม
ลักษณะและขอบเขตของ TextView
การตั้งค่านี้ช่วยให้คุณ
ปรับขนาดข้อความให้เหมาะสมในหน้าจอต่างๆ ด้วยเนื้อหาแบบไดนามิก
Support Library 26.0 รองรับการปรับขนาด TextView
อัตโนมัติอย่างเต็มรูปแบบ
ในอุปกรณ์ที่ใช้ Android เวอร์ชัน 8.0 (API ระดับ 26) หรือต่ำกว่า
แพ็กเกจ android.support.v4.widget
มี TextViewCompat
ในการเข้าถึงคุณลักษณะในรูปแบบที่เข้ากันได้แบบย้อนหลัง
ตั้งค่าขนาดอัตโนมัติของ TextView
คุณสามารถใช้เฟรมเวิร์กหรือไลบรารีการสนับสนุนเพื่อตั้งค่าการปรับขนาดอัตโนมัติ
TextView
แบบเป็นโปรแกรมหรือใน XML ถึง
ตั้งค่าแอตทริบิวต์ XML คุณยังสามารถใช้คุณสมบัติ
ใน Android Studio
คุณตั้งค่าการปรับขนาด TextView
อัตโนมัติได้ 3 วิธี
ซึ่งอธิบายไว้ในส่วนต่อๆ ไป
หมายเหตุ: หากคุณตั้งค่าการปรับขนาดอัตโนมัติในไฟล์ XML เราจะไม่ดำเนินการต่อไปนี้
ขอแนะนำให้ใช้ค่า "wrap_content" สำหรับ
แอตทริบิวต์ layout_width
หรือ layout_height
ของแอตทริบิวต์
TextView
การดำเนินการนี้อาจ
ผลลัพธ์ที่ไม่คาดคิด
ค่าเริ่มต้น
การตั้งค่าเริ่มต้นจะทำให้การปรับขนาด TextView
เป็นแบบอัตโนมัติ
เหมือนกันบนแกนแนวนอนและแกนแนวตั้ง
- หากต้องการกำหนดการตั้งค่าเริ่มต้นแบบเป็นโปรแกรม ให้เรียกเมธอด
setAutoSizeTextTypeWithDefaults(int autoSizeTextType)
ระบุAUTO_SIZE_TEXT_TYPE_NONE
เพื่อปิด ฟีเจอร์การปรับขนาดอัตโนมัติหรือAUTO_SIZE_TEXT_TYPE_UNIFORM
เพื่อ ปรับสัดส่วนแกนแนวนอนและแกนแนวตั้งให้สม่ำเสมอกัน - หากต้องการกำหนดการตั้งค่าเริ่มต้นใน XML ให้ใช้เนมสเปซ
android
และตั้งค่าautoSizeTextType
เป็น none หรือ แบบเดียวกัน
หมายเหตุ: ขนาดเริ่มต้นสำหรับแบบเดียวกัน
คือ minTextSize = 12sp
maxTextSize = 112sp
และ granularity = 1px.
<?xml version="1.0" encoding="utf-8"?> <TextView android:layout_width="match_parent" android:layout_height="200dp" android:autoSizeTextType="uniform" />
กำหนดการตั้งค่าเริ่มต้นโดยใช้ Support Library
- หากต้องการกำหนดการตั้งค่าเริ่มต้นแบบเป็นโปรแกรมผ่านไลบรารีการสนับสนุน
โทรหา
TextViewCompat.setAutoSizeTextTypeWithDefaults(TextView textview, int autoSizeTextType)
ระบุอินสแตนซ์ของวิดเจ็ตTextView
และข้อความ 1 ประเภท เช่นTextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE
หรือTextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM
- หากต้องการกำหนดการตั้งค่าเริ่มต้นใน XML ผ่านไลบรารีการสนับสนุน ให้ใช้เมธอด
เนมสเปซ
app
และกำหนดautoSizeTextType
เป็น none หรือ uniform
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="200dp" app:autoSizeTextType="uniform" /> </LinearLayout>
รายละเอียด
คุณสามารถกำหนดช่วงของขนาดข้อความต่ำสุดและสูงสุด
ซึ่งระบุขนาดของแต่ละขั้นตอน
TextView
จะมีสเกลเท่ากันในช่วงระหว่าง
ขนาดต่ำสุดและสูงสุด การเพิ่มแต่ละครั้งที่เกิดขึ้นเป็นขั้นตอน
การตั้งค่าขนาดในแอตทริบิวต์รายละเอียด
- หากต้องการกำหนดช่วงของขนาดข้อความและมิติข้อมูลแบบเป็นโปรแกรม ให้เรียกใช้
เวลา
setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit)
ระบุค่าสูงสุด ค่าต่ำสุด และรายละเอียด และTypedValue
ใดก็ได้ มิติข้อมูล - หากต้องการกำหนดช่วงของขนาดข้อความและมิติข้อมูลใน XML ให้ใช้
android
เนมสเปซและกำหนด แอตทริบิวต์ต่อไปนี้- ตั้งค่า
autoSizeTextType
เป็น none หรือ uniform ค่า none คือค่าเริ่มต้น และแบบเดียวกันจะTextView
ปรับสเกลเท่ากันในแนวนอนและ แกนแนวตั้ง - ตั้งค่า
autoSizeMinTextSize
autoSizeMaxTextSize
, และautoSizeStepGranularity
เพื่อกำหนดขนาดสำหรับการปรับขนาดอัตโนมัติTextView
- ตั้งค่า
<?xml version="1.0" encoding="utf-8"?> <TextView android:layout_width="match_parent" android:layout_height="200dp" android:autoSizeTextType="uniform" android:autoSizeMinTextSize="12sp" android:autoSizeMaxTextSize="100sp" android:autoSizeStepGranularity="2sp" />
กำหนดรายละเอียดโดยใช้ไลบรารีการสนับสนุน
- หากต้องการกำหนดช่วงของขนาดข้อความและมิติข้อมูลแบบเป็นโปรแกรมผ่าน
ไลบรารีการสนับสนุน เรียก
TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit)
ระบุค่าสูงสุด ค่าต่ำสุด ค่ารายละเอียด และหน่วยมิติข้อมูลTypedValue
ใดก็ได้ - ในการกำหนดช่วงของขนาดข้อความและมิติข้อมูลใน XML ผ่านทางการสนับสนุน
ไลบรารี ให้ใช้เนมสเปซ
app
และตั้งค่าautoSizeText
autoSizeMinTextSize
autoSizeMaxTextSize
และautoSizeStepGranularity
ในไฟล์ XML ของเลย์เอาต์
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="200dp" app:autoSizeTextType="uniform" app:autoSizeMinTextSize="12sp" app:autoSizeMaxTextSize="100sp" app:autoSizeStepGranularity="2sp" /> </LinearLayout>
ขนาดที่กำหนดล่วงหน้า
ขนาดที่กำหนดล่วงหน้าให้คุณระบุค่าที่พร็อพเพอร์ตี้
TextView
จะเลือกเมื่อปรับขนาดข้อความอัตโนมัติ
-
เพื่อใช้ขนาดที่กำหนดไว้ล่วงหน้าเพื่อตั้งค่าการปรับขนาดอัตโนมัติ
TextView
แบบเป็นโปรแกรม ให้เรียกฟังก์ชัน วันที่setAutoSizeTextTypeUniformWithPresetSizes(int[] presetSizes, int unit)
ระบุอาร์เรย์ขนาดและTypedValue
สำหรับขนาด -
เพื่อใช้ขนาดที่กำหนดไว้ล่วงหน้าเพื่อตั้งค่าการปรับขนาดอัตโนมัติ
TextView
ใน XML ให้ใช้android
Namespace และตั้งค่าแอตทริบิวต์ต่อไปนี้- ตั้งค่า
autoSizeTextType
เป็น none หรือ uniform คำสั่ง none เป็นค่าเริ่มต้น และแบบเดียวกันจะTextView
ปรับสเกลเท่ากันในแนวนอนและ แกนแนวตั้ง - ตั้งค่า
autoSizePresetSizes
เป็นอาร์เรย์ของขนาดที่กำหนดล่วงหน้า ในการเข้าถึงอาร์เรย์เป็น ให้กำหนดอาร์เรย์ในres/values/arrays.xml
- ตั้งค่า
<resources> <array name="autosize_text_sizes"> <item>10sp</item> <item>12sp</item> <item>20sp</item> <item>40sp</item> <item>100sp</item> </array> </resources>
<?xml version="1.0" encoding="utf-8"?> <TextView android:layout_width="match_parent" android:layout_height="200dp" android:autoSizeTextType="uniform" android:autoSizePresetSizes="@array/autosize_text_sizes" />
ตั้งค่าขนาดที่กำหนดล่วงหน้าโดยใช้ไลบรารีการสนับสนุน
- เพื่อใช้ขนาดที่กำหนดไว้ล่วงหน้าเพื่อตั้งค่าการปรับขนาดอัตโนมัติ
TextView
แบบเป็นโปรแกรม ผ่านทางไลบรารีการสนับสนุน ให้เรียกTextViewCompat.setAutoSizeTextTypeUniformWithPresetSizes(TextView textView, int[] presetSizes, int unit)
โปรดระบุอินสแตนซ์ของคลาสTextView
ซึ่งเป็น อาร์เรย์ของขนาด และหน่วยมิติข้อมูลTypedValue
สำหรับ ขนาด - เพื่อใช้ขนาดที่กำหนดไว้ล่วงหน้าเพื่อตั้งค่าการปรับขนาดอัตโนมัติ
TextView
ใน XML ผ่านไลบรารีการสนับสนุน ให้ใช้ เนมสเปซapp
และกำหนดautoSizeTextType
และautoSizePresetSizes
ในไฟล์ XML ของเลย์เอาต์
<resources> <array name="autosize_text_sizes"> <item>10sp</item> <item>12sp</item> <item>20sp</item> <item>40sp</item> <item>100sp</item> </array> </resources>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="200dp" app:autoSizeTextType="uniform" app:autoSizePresetSizes="@array/autosize_text_sizes" /> </LinearLayout>
แหล่งข้อมูลเพิ่มเติม
ดูข้อมูลเพิ่มเติมเกี่ยวกับการปรับขนาด TextView
อัตโนมัติเมื่อทำงานกับไดนามิก
เนื้อหา ดู
Android Jetpack: การปรับขนาด TextView โดยอัตโนมัติ