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
水平軸と垂直軸を均等にスケーリングします。 - XML でデフォルト設定を定義するには、
android
名前空間を使用します。 を設定します。autoSizeTextType
属性を none または uniform:
注: 均一な拡大縮小のデフォルトのディメンションは、minTextSize = 12sp
、maxTextSize = 112sp
、granularity = 1px.
です。
<?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_NONE
やTextViewCompat.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
名前空間を使用し、autoSizeText
、autoSizeMinTextSize
、autoSizeMaxTextSize
、および レイアウト 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 の自動サイズ調整。