对于 Android 8.0(API 级别 26)及更高版本,您可以指示
TextView
,即可调整文字大小
自动展开或收缩,以根据
TextView
的特征和边界。通过此设置,您可以
优化包含动态内容的不同屏幕上的文字大小。
支持库 26.0 完全支持自动调整大小 TextView
功能。
android.support.v4.widget
软件包中包含 TextViewCompat
类以向后兼容的方式访问功能。
设置 TextView 自动调整大小
您可以使用框架或支持库来设置
以编程方式或使用 XML 的 TextView
。如要设置 XML 属性,您还可以使用 Android Studio 中的 Properties 窗口。
您可以通过以下三种方式设置 TextView
的自动调整大小,
具体说明如下:
注意:如果您在 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
widget 的实例,以及其中一种文本类型, 例如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
命名空间并设置 以下属性: <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
尺寸单位。 - 如要在 XML 中定义一个文本大小范围和尺寸,请使用
库,使用
app
命名空间,并设置autoSizeText
、autoSizeMinTextSize
、autoSizeMaxTextSize
和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
尺寸单位 大小 - 要使用预设尺寸来设置
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
的大小
内容, 观看, content, watch
Android Jetpack:自动调整 TextView 的大小。