Dengan Android 8.0 (API level 26) dan yang lebih tinggi, Anda dapat memerintahkan
TextView
untuk memungkinkan ukuran teks otomatis meluas atau
menyempit guna mengisi tata letaknya berdasarkan
karakteristik dan batas TextView
. Setelan
ini memudahkan pengoptimalan ukuran teks di berbagai layar dengan
konten dinamis.
Support Library 26.0 memberikan dukungan penuh untuk fitur
TextView
yang mengubah ukuran otomatis di perangkat yang menjalankan versi Android sebelum
Android 8.0 (API level 26). Library tersebut memberikan dukungan untuk Android
4.0 (API level 14) dan yang lebih tinggi. Paket
android.support.v4.widget
berisi class TextViewCompat
untuk mengakses fitur dengan cara
yang mendukung kompatibilitas mundur.
Menyiapkan pengubahan ukuran otomatis TextView
Anda dapat menggunakan framework atau support library untuk menyiapkan pengubahan ukuran otomatis
TextView
secara terprogram atau dalam XML. Untuk
menetapkan atribut XML, Anda juga dapat menggunakan jendela Properties
di Android Studio.
Ada tiga cara untuk menyiapkan pengubahan ukuran otomatis
TextView
:
Catatan: Jika Anda menetapkan pengubahan ukuran otomatis dalam file XML, sebaiknya
jangan gunakan nilai "wrap_content" untuk
atribut layout_width
atau layout_height
TextView
. Tindakan ini dapat memberikan hasil yang tidak diharapkan.
Default
Setelan default memungkinkan pengubahan ukuran otomatis TextView
terskala
secara seragam pada sumbu horizontal dan vertikal.
- Untuk menentukan setelan default secara terprogram, panggil
metode
setAutoSizeTextTypeWithDefaults(int autoSizeTextType)
. BerikanAUTO_SIZE_TEXT_TYPE_NONE
untuk menonaktifkan fitur pengubahan ukuran otomatis atauAUTO_SIZE_TEXT_TYPE_UNIFORM
untuk menskalakan sumbu horizontal dan vertikal secara seragam. - Untuk menentukan setelan default dalam XML, gunakan namespace
android
dan tetapkan atributautoSizeTextType
ke none atau uniform.
Catatan: Dimensi default untuk penskalaan
seragam adalah minTextSize = 12sp
,
maxTextSize = 112sp
, dan granularity = 1px.
<?xml version="1.0" encoding="utf-8"?> <TextView android:layout_width="match_parent" android:layout_height="200dp" android:autoSizeTextType="uniform" />
Menggunakan support library
- Untuk menentukan setelan default secara terprogram melalui support library,
panggil
metode
TextViewCompat.setAutoSizeTextTypeWithDefaults(TextView textview, int autoSizeTextType)
. Sediakan instance widgetTextView
dan salah satu jenis teks, sepertiTextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE
atauTextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM
. - Untuk menentukan setelan default dalam XML melalui support library, gunakan
namespace
app
dan tetapkan atributautoSizeTextType
ke none atau 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>
Perincian
Anda dapat menentukan rentang ukuran teks minimum dan maksimum serta
dimensi yang menentukan ukuran setiap langkah. TextView
menskalakan secara seragam dalam rentang antara
atribut ukuran minimum dan maksimum. Setiap penambahan akan terjadi sesuai ukuran
langkah yang ditetapkan dalam atribut perincian.
- Untuk menentukan rentang ukuran teks dan dimensi secara terprogram,
panggil
metode
setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit)
. Berikan nilai maksimum, nilai minimum, nilai perincian, dan unit dimensiTypedValue
. - Untuk menentukan rentang ukuran teks dan dimensi dalam XML, gunakan namespace
android
dan tetapkan atribut berikut:- Tetapkan
atribut
autoSizeText
ke none atau uniform. none adalah nilai default dan uniform memungkinkanTextView
menskalakan secara seragam pada sumbu horizontal dan vertikal. - Tetapkan atribut
autoSizeMinTextSize
,autoSizeMaxTextSize
, danautoSizeStepGranularity
guna menentukan dimensi untuk pengubahan ukuran otomatisTextView
.
- Tetapkan
atribut
<?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" />
Menggunakan support library
- Untuk menentukan rentang ukuran teks dan dimensi secara terprogram melalui
support library, panggil
metode
TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit)
. Berikan nilai maksimum, nilai minimum, nilai perincian, dan unit dimensiTypedValue
. - Untuk menentukan rentang ukuran teks dan dimensi dalam XML melalui support
library, gunakan namespace
app
dan tetapkan atributautoSizeText
,autoSizeMinTextSize
,autoSizeMaxTextSize
, danautoSizeStepGranularity
dalam file XML tata letak.
<?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>
Ukuran Preset
Ukuran preset memungkinkan Anda menentukan semua nilai yang
dipilih TextView
saat mengubah ukuran otomatis suatu teks.
-
Untuk menggunakan ukuran preset guna menyiapkan pengubahan ukuran otomatis
TextView
secara terprogram, panggil metodesetAutoSizeTextTypeUniformWithPresetSizes(int[] presetSizes, int unit)
. Berikan array ukuran dan unit dimensiTypedValue
apa pun untuk ukurannya. -
Untuk menggunakan ukuran preset guna menyiapkan pengubahan ukuran otomatis
TextView
dalam XML, gunakan namespaceandroid
dan tetapkan atribut berikut:- Tetapkan atribut
autoSizeText
ke none atau uniform. none adalah nilai default dan uniform memungkinkanTextView
menskalakan secara seragam pada sumbu horizontal dan vertikal. - Tetapkan atribut
autoSizePresetSizes
ke array ukuran preset. Untuk mengakses array tersebut sebagai resource, tentukan array dalam fileres/values/arrays.xml
.
- Tetapkan atribut
<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" />
Menggunakan support library
- Untuk menggunakan ukuran preset guna menyiapkan pengubahan ukuran otomatis
TextView
secara terprogram melalui support library, panggil metodeTextViewCompat.setAutoSizeTextTypeUniformWithPresetSizes(TextView textView, int[] presetSizes, int unit)
. Berikan instance classTextView
, array ukuran, dan unit dimensiTypedValue
apa pun untuk ukurannya. - Untuk menggunakan ukuran preset guna menyiapkan pengubahan ukuran otomatis
TextView
dalam XML melalui support library, gunakan namespaceapp
dan tetapkan atributautoSizeText
danautoSizePresetSizes
dalam file XML tata letak.
<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>
Referensi lainnya
Untuk informasi lainnya tentang pengubahan ukuran otomatis TextView
saat bekerja dengan konten
dinamis, tonton Mengubah ukuran otomatis TextView.