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/

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值