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 の自動サイズ調整。