接触android开发不久,但是经常会发现一个问题,就是textview在每行末尾处显示标点符号、数字或者特殊字符时,经常会导致显示效果出现参差不齐,之前也一直没管过,后面做适配的时候发现真是丑,于是才想起解决,究其原因在于除汉字以外的其它字符(比如标点符号、字母、数字等)占用位置的大小,在计算机屏幕上,一个汉字要占两个英文字符的位置,人们把一个英文字符所占的位置称为"半角",相对地把一个汉字所占的位置称为"全角"。在汉字输入时,系统提供"半角"和"全角"两种不同的输入状态,但是对于英文字母、符号和数字等这些通用字符就不同于汉字,在半角状态它们被作为英文字符处理;而在全角状态,它们又可作为中文字符处理。所以说你在textview显示文字的时候应该用全角好一些,因为这样对于文章能整齐,美观。下面这个方法就是将半角转化为全角,这样就不会出现参差不齐的情况了。
public static String ToDBC(String text) {
char[] c = text.toCharArray();
for (int i = 0; i < c.length; i++) {
if (c[i] == 12288) {// 全角空格为12288,半角空格为32
c[i] = (char) 32;
continue;
}
if (c[i] > 65280 && c[i] < 65375)// 其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
c[i] = (char) (c[i] - 65248);
}
return new String(c);
}