Android TextView 文字长度控制

Android中TextView是最常用的的控件之一,主要用于文本的展示。
文本展示中,文本长度的控制还是挺需要注意的地方,下文将就此进行一些实验和分析。

TextView有几种控制文本长度的方法
android:maxWidth 控制View的长度来控制文本长度
android:maxLength 控制字符的个数来控制文本长度
android:maxEms 控制字符的长度来控制文本长度

以下使用简单的结构来分别进行验证
android:maxWidth + android:maxLines

    

这是比较简单粗暴的方法,通过长度和行数的设置,直接截断输入的文本。文本的字体大小改变后,可以展示的文字个数也会随之改变。支持省略号的缩进(android:ellipsize属性)。
PS:maxline = 1 与singleLine = true效果相同,不过魅族部分机型不支持maxLine,所以可以用singleLine更好些。

Android TextView 文字长度控制_第1张图片
图1

android:maxLength

    

maxLength用于限制输入字符的个数,先对文本进行截取,再填入控件,所以不支持省略号的缩进。使用maxLength,汉字,英文字母,标点以及空格都占一位。如下图所示,为maxLength为10的效果:


Android TextView 文字长度控制_第2张图片
图2

图3

android:maxEms

    

maxEms支持省略号的缩进。
Ems比较像一种单位或者权重,比如maxEms设为10时,大概可以展示20个英文字符,10个中文字符(中英文不同的标点符号权重不同,比如英文逗号可以展示将近50个,但中文逗号只能展示10个,而英文的*号可以展示20个)。但实际上也并非一一对应的,下文为maxEms的具体定义,可知其实并不好控制:

maxEms=”10” 限制TextView的最大宽度为10个大写M的字符宽度。em是一个印刷排版的单位,表示字宽的单位。 em字面意思为:equal M(和M字符一致的宽度为一个单位)简称em。ems是em的复数表达。

你可能感兴趣的:(Android TextView 文字长度控制)