刚拿到需求,需要给TextView设置文本显示的长度
我想这还不简单么,直接设置maxLength= “xx” 不就可以了
后来产品看过效果说需要区分中英文字符,假如全是汉字显示8个,那么英文字母就应该显示16个
呃。。。这也好说,我记得有一个属性就是区分中英文字符的,把maxLength属性改为maxEms= “xx” ,这下没问题了吧!
谁知产品看过后还说不行,换成maxEms属性,当内容超过规定的长度时,会在后面自动加上…,这样的效果也不行
呃。。。好吧,我再看看TextView还有没有其它可取的属性可以设置的
搭配了N种方式,最后发现都不能通过设置属性来控制文本显示的长度,看来只有从内容上下手了,通过JAVA的字符截取来控制文本内容的长度
/**
* 截取字符长度,区分中英文
*
* @param abc 字符串内容
* @param len 截取长度
* @return
*/
public static String subStr(String abc, int len) {
if (TextUtils.isEmpty(abc) || len <= 0)
return "";
StringBuffer stringBuffer = new StringBuffer();
int sum = 0;
char[] chars = abc.toCharArray();
for (int i = 0; i < chars.length; i++) {
if (sum >= (len * 3)) {
break;
}
char bt = chars[i];
if (bt > 64 && bt < 123) {
stringBuffer.append(String.valueOf(bt));
sum += 2;
} else {
stringBuffer.append(String.valueOf(bt));
sum += 3;
}
}
return stringBuffer.toString();
}
这下完美解决了,快快收藏起来吧