Dengan Android 8.0 (API level 26) dan yang lebih baru, Anda dapat memerintahkan
TextView
untuk memungkinkan ukuran teks
meluas atau berkontraksi secara otomatis untuk
mengisi tata letaknya berdasarkan
Karakteristik dan batas TextView
. Setelan ini akan memudahkan
mengoptimalkan ukuran teks di berbagai layar dengan konten dinamis.
Support Library 26.0 sepenuhnya mendukung perubahan ukuran otomatis TextView
di perangkat yang menjalankan Android versi 8.0 (API level 26) atau yang lebih lama.
Paket android.support.v4.widget
berisi TextViewCompat
untuk mengakses fitur dengan cara yang kompatibel dengan versi sebelumnya.
Menyiapkan ukuran otomatis TextView
Anda dapat menggunakan framework atau {i>Support Library<i}
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
,
dijelaskan di bagian berikut:
Catatan: Jika Anda menetapkan pengubahan ukuran otomatis dalam file XML, kami tidak
direkomendasikan menggunakan nilai "wrap_content" untuk
Atribut layout_width
atau layout_height
dari
TextView
. Melakukan hal itu
dapat menghasilkan
hasil yang tidak diharapkan.
Default
Setelan default memungkinkan pengubahan ukuran otomatis TextView
secara seragam pada sumbu horizontal dan vertikal.
- Untuk mendefinisikan setelan default secara terprogram, panggil metode
setAutoSizeTextTypeWithDefaults(int autoSizeTextType)
. BerikanAUTO_SIZE_TEXT_TYPE_NONE
untuk dinonaktifkan 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 setelautoSizeTextType
ke tidak ada atau seragam.
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 mendefinisikan setelan {i>default<i} secara terprogram melalui {i>Support Library<i},
panggil
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 mendefinisikan setelan default dalam XML melalui Pustaka Dukungan, gunakan atribut
Namespace
app
dan menetapkanautoSizeTextType
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 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, tingkat perincian nilai, dan nilaiTypedValue
unit dimensi kustom. - Untuk menentukan rentang ukuran teks dan dimensi dalam XML, gunakan
android
namespace dan atur atribut berikut:- Setel
autoSizeTextType
ke none atau uniform. Nilai none adalah setelan default, dan uniform memungkinkanTextView
diskalakan secara seragam pada horizontal dan sumbu vertikal. - Setel
autoSizeMinTextSize
,autoSizeMaxTextSize
, danautoSizeStepGranularity
dimensi untuk pengubahan ukuran otomatis,TextView
.
- Setel
<?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
TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit)
. Berikan nilai maksimum, nilai minimum, nilai perincian, dan unit dimensiTypedValue
. - Untuk mendefinisikan rentang ukuran teks dan dimensi dalam XML melalui Dukungan
Library, gunakan namespace
app
, lalu tetapkanautoSizeText
,autoSizeMinTextSize
,autoSizeMaxTextSize
, dan AtributautoSizeStepGranularity
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 standar memungkinkan Anda menentukan nilai
TextView
memilih saat mengubah ukuran teks 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:- Setel
autoSizeTextType
ke none atau uniform. Nilai none adalah nilai default, dan uniform memungkinkanTextView
diskalakan secara seragam pada horizontal dan sumbu vertikal. - Tetapkan atribut
autoSizePresetSizes
ke array ukuran preset. Untuk mengakses array tersebut sebagai resource, tentukan array dalam fileres/values/arrays.xml
.
- Setel
<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, panggilTextViewCompat.setAutoSizeTextTypeUniformWithPresetSizes(TextView textView, int[] presetSizes, int unit)
. Berikan instance classTextView
, ukuran, dan unit dimensiTypedValue
apa pun untuk ukurannya. - Untuk menggunakan ukuran preset guna menyiapkan pengubahan ukuran otomatis
TextView
dalam XML melalui Support Library, gunakanapp
dan tetapkanautoSizeTextType
serta AtributautoSizePresetSizes
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, tonton
Android Jetpack: Pengubahan Ukuran Otomatis TextView.