TextView の自動サイズ調整

Android 8.0(API レベル 26)以降では、 TextView: テキストサイズを調整します サイズに応じて、レイアウトに合わせて自動的に拡大または縮小 TextView の特性と境界。この設定により、 動的コンテンツを使用して、さまざまな画面でテキストサイズを最適化します。

サポート ライブラリ 26.0 が TextView の自動サイズ設定を完全にサポート この機能は、Android バージョン 8.0(API レベル 26)以前を搭載しているデバイスで利用できます。 android.support.v4.widget パッケージには、TextViewCompat が含まれています。 下位互換性のある方法で機能にアクセスできます。

TextView の自動サイズ調整を設定する

フレームワークまたはサポート ライブラリを使用して、 TextView。プログラムまたは XML で記述します。XML 属性を設定するには、Android Studio の [Properties] ウィンドウも利用できます。

TextView の自動サイズ調整を設定する方法は 3 つあります。 以降のセクションで説明します。

: XML ファイルで自動サイズ設定を設定した場合、 値「wrap_content」を使用することをおすすめします。の 属性の layout_width 属性または layout_height 属性 TextView。その結果、 想定外の結果になることもあります

デフォルト

デフォルトの設定では、TextView の自動サイズ調整が有効になります。 水平軸と垂直軸で一様に表示します。

  • デフォルトの設定をプログラムで定義するには、 <ph type="x-smartling-placeholder"></ph> setAutoSizeTextTypeWithDefaults(int autoSizeTextType) メソッドを使用します。無効にするには AUTO_SIZE_TEXT_TYPE_NONE を指定してください 自動サイズ調整機能、または AUTO_SIZE_TEXT_TYPE_UNIFORM 水平軸と垂直軸を均等にスケーリングします。
  • : 均一な拡大縮小のデフォルトのディメンションは、minTextSize = 12spmaxTextSize = 112spgranularity = 1px. です。

  • XML でデフォルト設定を定義するには、android 名前空間を使用します。 を設定します。 autoSizeTextType 属性を none または uniform:
  • <?xml version="1.0" encoding="utf-8"?>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:autoSizeTextType="uniform" />
    

サポート ライブラリを使用してデフォルト設定を定義する

  • サポート ライブラリからプログラムでデフォルト設定を定義するには、次の操作を行います。 呼び出す <ph type="x-smartling-placeholder"></ph> TextViewCompat.setAutoSizeTextTypeWithDefaults(TextView textview, int autoSizeTextType) メソッドを呼び出します。TextView ウィジェットのインスタンスとテキストタイプのいずれかを指定します。 TextViewCompat.AUTO_SIZE_TEXT_TYPE_NONETextViewCompat.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 を使用します。 Namespace と 次の属性があります。 <ph type="x-smartling-placeholder">
      </ph>
    • autoSizeTextType 属性は none または uniform のいずれかに指定します。none 値 デフォルトは [uniform] です。 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" />
    

サポート ライブラリを使用して粒度を定義する

  • テキストサイズの範囲とディメンションを サポート ライブラリを使用する場合は、 <ph type="x-smartling-placeholder"></ph> TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit) メソッドを呼び出します。最大値、最小値、粒度値、 および任意の TypedValue ディメンション単位。
  • Support API を使用して、XML でテキストサイズの範囲とディメンションを定義するには、 ライブラリでは、app 名前空間を使用し、 autoSizeTextautoSizeMinTextSizeautoSizeMaxTextSize、および レイアウト XML ファイル内の autoSizeStepGranularity 属性。
  • <?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 ディメンション単位を指定します。
  • プリセット サイズを使用して XML で TextView の自動サイズ調整を設定するには、android 名前空間を使用し、次の属性を設定します。
    • autoSizeTextType を設定する 属性は none または uniform のいずれかに指定します。none デフォルト値で、uniform では、 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 サポート ライブラリを使用する場合は、 <ph type="x-smartling-placeholder"></ph> TextViewCompat.setAutoSizeTextTypeUniformWithPresetSizes(TextView textView, int[] presetSizes, int unit) メソッドを呼び出します。TextView クラスのインスタンス、 サイズの配列と、任意の TypedValue ディメンション単位が 指定します。
  • プリセット サイズを使用して、 サポート ライブラリを介して XML で TextView を使用する場合は、 app 名前空間を使用し、autoSizeTextType と レイアウト XML ファイル内の autoSizePresetSizes 属性。
  • <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 の自動サイズ調整