Autosizing TextViews
在 Android 8.0(API level 26) 和更高版本,你能指示一个 TextView 让它自动扩大或者收缩从而使用 TextView 的 characteristics 和 boundaries 填充它的布局。 这种设置使得在不同屏幕上操作动态内容更加方便。
Support Library 26.0 提供了全面对 自动 TextView 的全面支持。 这个库从 Android 4.0(API level 14) 开始到之后的版本都会提供支持。 android.support.v4.widget
包中的 TextViewCompat
提供向后的兼容。 对应于 AndroidX :androidx.core.widget.TextViewCompat
0x01、 设置自动调整尺寸的 TextView
你可以使用 framework 或者 支持库,通过手动编程或者 XML 配置文件使用 autosize TextView 。 要设置 XML 属性,你可以使用 AndroidStudio 的 Properties 窗口 。
这里有三种设置 autosizing TextView 的方式 。
☆ 注意 : 如果你在 XML 文件中设置自动尺寸,推荐使用 “wrap_content” 设置
TextView
的layout_width
或者layout_height
。
0x02、 默认的
默认设置的情况下,TextView 的缩放在 水平和竖直方向的缩放是均匀分布的。
要通过编程的方式调整默认设置,调用
setAutoSizeTextTypeWithDefaults(int autoSizeTextType)
函数。 可以提供的参数AUTO_SIZE_TEXT_TYPE_NONE
关闭自动调整功能,也可以使用AUTO_SIZE_TEXT_TYPE_UNIFORM
设置水平和竖直方向均匀缩放。☆ NOTE : 在均匀缩放情况下的默认尺寸是
minTextSize = 12sp
,maxTextSize = 112sp
,granularity = 1px
。要使用 XML 设置,使用 Android 命名空间设置 autoSizeTextTye 属性值为 note 或者 uniform
0x03、 使用支持库
要通过编程的方式调整默认设置,调用
TextViewCompat.setAutoSizeTextTypeWithDefaults(TextView textview, int autoSizeTextType)
方法。 提供一个 TextView 实例,和一个文字类型 :TextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE
或TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM
要使用支持库并且在 XML 文件中定义默认设置,使用
app
命名空间设置autoSizeTextType
的值为 note 或 uniform 。
0x04、 粒度
你能定义 textSize 的最小或最大值,以及指定每个步骤大小的范围 。 TextView 在 最小值和最大值 之间均匀缩放 。 每一步的增量根据粒度中设置的步长进行 。
要通过编程的方式定义文字大小的范围,调用
setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit)
方法。 提供任意 TypedValue 单位指定的 最大值,最小值,粒度值 。要在 XML 文件中定义文字尺寸的大小范围,使用 android 命名空间并且设置下面的属性 1. 使用 autoSizeText 属性设
none
或者uniform
。none
是默认值,uniform
使得 TextView 的内容在横向或者纵向均匀缩放。设置
autoSizeMinTextSize
,autoSizeMaxTextSize
和autoSizeStepGranulatity
属性定义 TextView 在自动调整文字大小时候的调整步长 。
4.1、 使用支持库
后文 暂略 ......
Last updated