Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Mengubah Ukuran Otomatis TextView

Dengan Android 8.0 (API level 26) dan yang lebih tinggi, Anda dapat menyetel TextView untuk memungkinkan ukuran teks otomatis melebar atau memanjang dalam mengisi tata letaknya berdasarkan karakteristik dan batas TextView. Setelan ini akan mempermudah pengoptimalan ukuran teks pada layar yang berbeda 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, kami tidak merekomendasikan untuk menggunakan nilai "wrap_content" di atribut layout_width atau layout_height pada TextView. Tindakan ini dapat memberikan hasil yang mungkin tidak diharapkan.

Default

Setelan default memungkinkan pengubahan ukuran otomatis TextView terskala secara merata pada sumbu horizontal dan vertikal.

  • Untuk menentukan setelan default secara terprogram, panggil metode setAutoSizeTextTypeWithDefaults(int autoSizeTextType) . Berikan AUTO_SIZE_TEXT_TYPE_NONE untuk menonaktifkan fitur pengubahan ukuran otomatis atau AUTO_SIZE_TEXT_TYPE_UNIFORM untuk menskalakan sumbu horizontal dan vertikal secara merata.
  • Catatan: Dimensi default untuk penskalaan merata adalah minTextSize = 12sp, maxTextSize = 112sp, dan granularity = 1px.

  • Untuk menentukan setelan default dalam XML, gunakan namespace android dan tetapkan atribut autoSizeTextType ke none atau uniform.
  •     <?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 widget TextView dan salah satu jenis teks, seperti TextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE atau TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM.
  • Untuk menentukan setelan default dalam XML melalui support library, gunakan namespace app dan tetapkan atribut autoSizeTextType 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 menskala secara merata dalam rentang antara atribut ukuran minimum dan maksimum. Setiap penambahan akan terjadi sesuai dengan ukuran langkah yang ditetapkan di atribut 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 dimensi TypedValue.
  • Untuk menentukan rentang ukuran teks dan dimensi dalam XML melalui support library, gunakan namespace app dan tetapkan atribut autoSizeText, autoSizeMinTextSize, autoSizeMaxTextSize, dan autoSizeStepGranularity 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 metode setAutoSizeTextTypeUniformWithPresetSizes(int[] presetSizes, int unit). Berikan array ukuran dan unit dimensi TypedValue apa pun untuk ukurannya.
  • Untuk menggunakan ukuran preset guna menyiapkan pengubahan ukuran otomatis TextView dalam XML, gunakan namespace android dan tetapkan atribut berikut:
    • Tetapkan atribut autoSizeText ke none atau uniform. none adalah nilai default dan uniform memungkinkan TextView menskala secara merata pada sumbu horizontal dan vertikal.
    • Tetapkan atribut autoSizePresetSizes ke array ukuran preset. Untuk mengakses array tersebut sebagai resource, tentukan array dalam file 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" />
        

Menggunakan support library

  • Untuk menggunakan ukuran preset guna menyiapkan pengubahan ukuran otomatis TextView secara terprogram melalui support library, panggil metode TextViewCompat.setAutoSizeTextTypeUniformWithPresetSizes(TextView textView, int[] presetSizes, int unit). Berikan instance class TextView, array ukuran, dan unit dimensi TypedValue apa pun untuk ukurannya.
  • Untuk menggunakan ukuran preset guna menyiapkan pengubahan ukuran otomatis TextView dalam XML melalui support library, gunakan namespace app dan tetapkan atribut autoSizeText dan autoSizePresetSizes 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 Mengubah ukuran otomatis TextView.