Dengan Android 8.0 (API level 26) dan yang lebih tinggi, Anda dapat memerintahkan
TextView
agar ukuran teks
otomatis meluas atau menyusut untuk mengisi tata letaknya berdasarkan
karakteristik dan batas TextView
. Setelan ini mempermudah
pengoptimalan ukuran teks di berbagai layar dengan konten dinamis.
Support Library 26.0 sepenuhnya mendukung fitur pengubahan ukuran otomatis TextView
di perangkat yang menjalankan Android versi 8.0 (API level 26) atau yang lebih rendah.
Paket android.support.v4.widget
berisi class TextViewCompat
untuk mengakses fitur dengan cara yang memiliki kompatibilitas mundur.
Menyiapkan 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
,
yang dijelaskan di bagian berikut:
Catatan: Jika Anda menetapkan pengubahan ukuran otomatis dalam file XML, sebaiknya jangan
gunakan nilai "wrap_content" untuk
atribut layout_width
atau layout_height
dari
TextView
. Tindakan tersebut 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" />
Menentukan setelan default 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 terjadi sebagai ukuran langkah yang ditetapkan di 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
autoSizeTextType
ke none atau uniform. Nilai none adalah 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" />
Menentukan perincian 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 standar
Ukuran preset memungkinkan Anda menentukan nilai yang
dipilih TextView
saat mengubah ukuran teks secara otomatis.
-
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
autoSizeTextType
ke none atau uniform. Nilai none adalah 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" />
Menyiapkan ukuran preset 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)
. Sediakan 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 atributautoSizeTextType
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 tambahan tentang pengubahan ukuran otomatis TextView
saat bekerja dengan konten
dinamis, tonton
Android Jetpack: Autosizing TextView.