实际上在TextView中,碰到排版设计和自动换行导致的错乱是很普遍的,导致这个问题的缘故是英语和汉语混合使用,半角字符和全角字符混合使用。英语中的数据,英文字母,标点一般全是半角字符,因此占用量没法明确。他们有别于中国汉字的团块。因而,许多标识符的排版设计不是匀称的。

寻找缘故,当然就来了。一般有这两种方式能够化解这个问题。

1.使文字主视图中的标识符彻底有视角。即把全部的数据,英文字母,标点符号转化成全角字符,使其与中国汉字同用2个字节数,防止了因占有室内空间而导致的排印错乱。

将半宽变换为全宽的编码如下所示:

/**

*半角到全角。

*

* @param str

* @回到

*/

公共性静态数据字符串数组ToDBC(字符串数组字符串数组){ 0

char[]c = str . tochararray();

for(int I = 0;i < c .长短;i ){ 0

if (c[i] == 12288) {

c[I]=(char)32;

再次;

}

if (c[i] > 65280 && c[i] < 65375)

c[I]=(char)(c[I]–65248);

}

回到新字符串数组(c);

}

2.删掉特殊符号或将全部汉语标识更换为英语标识。全部特殊符号用正则表达式过虑,汉语标识用英文标识替代。

/**

*删掉特殊符号或将全部汉语标识更换为英语标识。

*

* @param str

* @回到

*/

公共性静态数据字符串数组过滤装置

str = str.replaceAll("【","[")。replaceAll(" 】","]")

。replaceAll("!", "!").replaceAll(":,":);//更换汉语标识。

string RegEx = "[㎡]";//删掉特殊符号。

pattern p = pattern . compile(RegEx);

matcher m = p . matcher(str);

回到m.replaceAll(" ")。trim();

}

编码不易,假如你没吝啬一切不便,请帮助分享一下,感谢。

著名移动互联权威专家,自媒体人,微信账户中的“無名程序猿”经营,每日共享一项原創技术性和移动互联专业知识。微信官方网账户:smart_android,今日头条号和度娘的100个账户全是“不知名的程序猿”。

评论(0条)

刀客源码 游客评论