Android O允许你通知TextView
基于字符内容和布局边界,自动缩放文本的尺寸。这个功能设置使得我们很容易在不同大小的屏幕上优化动态文本的显示尺寸。
设置TextView自动缩放
你可以通过代码或者布局xml中设置自动缩放属性。同时可以使用以下两种方式来进行设置:
- 间隔尺寸
- 预设尺寸
间隔尺寸
使用间隔尺寸功能,你可以指定最小和最大的字号,以及缩放时的步长。TextView将在最小和最大字号之间统一缩放文本内容。每次增加的字号步长将采用间隔尺寸属性的值。
通过间隔尺寸设置TextView的自动缩放,你可以采用如下两种方式:
- 调用setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit),最大、最小、间隔步长的单位可以为TypeValued定义的任意一种。
- 在xml布局文件中设置TextView的autoSizeText属性启用自动缩放。这个属性的值只能为none或者uniform,默认值是none。取none时表示不启用自动缩放。取uniform时在水平和垂直方向统一缩放。使用autoSizeMinText、autoSizeMaxTextSize和autoSizeStepGranularity属性在xml布局中设置自动缩放的尺寸。
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoSizeText="uniform"
android:autoSizeMinTextSize="12sp"
android:autoSizeMaxTextSize="100sp"
android:autoSizeStepGranularity="2sp"/>```
你也可以在Android Studio的属性窗口中对这些属性进行设置。
## 预设尺寸
使用预设尺寸,TextView将从提前定义好的尺寸列表中执行自动缩放。
使用以下两种方式来设置预设尺寸:
- 调用setAutoSizeTextTypeUniformWithPresetSizes(int[] presetSizes, int unit),提供一个尺寸大小数组,数组值的单位可以为TypeValued定义的任意一种。
- 在xml布局文件中设置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>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoSizeText="uniform"
android:autoSizePresetSizes="@array/autosize_text_sizes"
/>
你也可以在Android Studio的属性窗口中对这些属性进行设置。