在最近迭代的版本中,根据测试的反馈,说有些内容显示很不整齐,会给用户体验带来不好的影响,比如有些行还有可以现实很多内容的,但是却无缘无故换行了。其实这在我看来不是什么大问题,但是既然测试要把这个当做bug来处理,一直关注产品bug的我是必须要解决这个问题的。
原理
造成TextView排版内容显示不整齐的原始是因为半角字符和全角字符混用,这样的情况一般是汉字与数字、英文字母混用的结果
解决方案
这里采用一个很简单的思路,既然是因为半角字符和全角字符混用导致的,那么可以将要实现的内容同一一下字符编码,网上可以找到的方法是将字符全部转换为全角字符,具体代码如下:
/**
* 针对TextView显示中文中出现的排版错乱问题,通过调用此方法得以解决
* @param str
* @return 返回全部为全角字符的字符串
*/
public static String toDBC(String str) {
char[] c = str.toCharArray();
for (int i = 0; i < c.length; i++) {
if (c[i] == 12288) {
c[i] = (char) 32;
continue;
}
if (c[i] > 65280 && c[i] < 65375) {
c[i] = (char) (c[i] - 65248);
}
}
return new String(c);
}
补充知识
全角: 指一个字符占用两个标准的字符位置
半角: 指一个字符占用一个标准的字符位置
汉字字符和规定了全角的英文字符以及国际GB2312-80中得图形符号和特殊字符都是全角字符,系统命令是不用全角字符的。
通常的英文字母、数字键、符号键都是半角的。
全角占两个字节,半角占一个字节。
http://blog.naiyu.me/textview-show-chinease/