Android:TextView的AutoSizeText实现过程

在实际开发中,我们经常会遇到,TextView区域固定,但字数不确定,又希望把文字信息都展示出来,IOS中可以轻松实现,但在Android上好想并没有这种实现。

从8.0(API26)开始,TextView组件提供了autoSizeTextType、autoSizeMinTextSize、autoSizeMaxTextSize等相关属性,来满足这个需求,在8.0以前的版本,可以通过com.android.support:appcompat-v7来实现。

那么要实现这个功能,对于TextView的布局设置,也是有要求的。

1、不要设置行数,包括SingleLine。

2、高度不要设置wrap_content,要设置固定值。

3、对于8.0以前的版本,xml布局文件中要使用android.support.v7.widget.AppCompatTextView

android的设置,除了设置autoSizeTextType=uniform,还要设置autoSizeMinTextSize、autoSizeMaxTextSize,系统有默认值。这两个参数,个人感觉有些多余,比起IOS有点繁琐。因为字数不固定,你也不知道到底字号小到什么程度,才能完全展示,所以autoSizeMinTextSize我们只能设置一个尽量小的值。如果最大最小值设置不合适,一样达不到效果。

当在xml文件设置好上面的属性后,在执行TextView的构造函数时,如果设置了autoSize相关属性,那么会执行setupAutoSizeText方法,进行一些属性的设置。

private boolean setupAutoSizeText() {
    if (supportsAutoSizeText() && mAutoSizeTextType == AUTO_SIZE_TEXT_TYPE_UNI

猜你喜欢

转载自blog.csdn.net/bdmh/article/details/104689614