今天忽然发现android项目中的文字排版参差不齐的情况非常严重,不得不想办法解决一下。经过研究之后,终于找到了textview自动换行导致混乱的原因了----半角字符与全角字符混乱所致!一般情况下,我们输入的数字、字母以及英文标点都是半角,所以占位无法确定。它们与汉字的占位大大的不同,由于这个原因,导致很多文字的排版都是参差不齐的。对此我找到了两种办法可以解决这个问题:
1. 将textview中的字符全角化。即将所有的数字、字母及标点全部转为全角字符,使它们与汉字同占两个字节,这样就可以避免由于占位导致的排版混乱问题了。 半角转为全角的代码如下,只需调用即可。
/**
* 半角转换为全角
*
* @param input
* @return
*/
public static String ToDBC(String input) {
char[] c = input.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);
}
2. 去除特殊字符或将所有中文标号替换为英文标号。利用正则表达式将所有特殊字符过滤,或利用replaceAll()将中文标号替换为英文标号。则转化之后,则可解决排版混乱问题。
/**
* 去除特殊字符或将所有中文标号替换为英文标号
*
* @param str
* @return
*/
public static String stringFilter(String str) {
str = str.replaceAll("【", "[").replaceAll("】", "]")
.replaceAll("!", "!").replaceAll(":", ":");// 替换中文标号
String regEx = "[『』]"; // 清除掉特殊字符
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
return m.replaceAll("").trim();
}
解决之前层次不齐的排版截图:
解决之后的整齐排版,如下图:
转自:http://blog.sina.com.cn/s/blog_73615d370100zpt5.html
- 大小: 196.6 KB
- 大小: 203.8 KB
分享到:
相关推荐
android TextView解决自动换行问题,设置行数后超过用省略号
解决TextView的排版问题-自动换行
用TextView显示的时候,会出现一个问题就是显示的文字中有括号、数字、或者英文的话他会立刻就换行,因为括号、数字等是半角,而汉字是全角,所以我们需要把半角转换为全角,使它们与汉字同占两个字节,现在已经解决...
两个功能 解决中英文结合导致提前换行bug。 textview动态变化行(显示更多),点击更多弹出全部textview再点击隐藏。
前几年的Android应用源码Demo,主要面向的是学生毕业设计学习。
解决TextView自动换行的排版混乱 允许设置SpannableString等特殊属性 至繁归于至简
Android高级应用源码-textView根据长度自动换行.zip
本类实现了文字的竖直排版显示(中国古时的行文形式),虽然仍有许多特效及功能仍未实现,但基本的使用已经能满足。版权:尽管放心用吧,可以自行随意改进转载和使用,转载时请保留这段文字即可另特别感谢 老僧xp ...
android 逐行逐字显示的textview 播放通知的字幕 逐字逐行显示。可以控制显示的次数。
安卓Android源码——textView根据长度自动换行.zip
主要为大家详细介绍了Android LinearLayout实现自动换行,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
解决 TextView 中文、英文、数字、符号 排版问题,注释很清晰,5分绝对值了,
自动换行的textview 自定义view 识别英文
android开发中的textview可以自动换行,但是对于显示纯英文文字来说很好用,如果夹杂了中文字符后,全角字符和半角字符混在一块儿,就会出现文字排版参差不齐,超级难看,这就需要重写textview来实现我们需要的显示...
根据textView的长度,和屏幕的宽度,在屏幕中自动添加,每一行添加2个还是3个,自动计算的
经过研究之后,终于找到了textview自动换行导致混乱的原因了—-半角字符与全角字符混乱所致!一般情况下,我们输入的数字、字母以及英文标点都是半角,所以占位无法确定。 它们与汉字的占位大大的不同,由于这个原因...
我一看很简单啊,一个TextView解决问题,然后做好以后在模拟器里一看….. 纳尼,这个时候才想起来,TextView 中英文在一起会有排版问题,那怎么解决呢…… 思路 刚开始的想法是一个字符一个字符的去绘制,绘制到最...
textView根据长度自动换行.zip项目安卓应用源码下载textView根据长度自动换行.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
安卓Andriod源码——textView根据长度自动换行.zip