Android TextView显示中文不对齐问题

在最近迭代的版本中,根据测试的反馈,说有些内容显示很不整齐,会给用户体验带来不好的影响,比如有些行还有可以现实很多内容的,但是却无缘无故换行了。其实这在我看来不是什么大问题,但是既然测试要把这个当做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/

你可能感兴趣的:(Android)