1、半角字符與全角字符混亂所致:這種情況一般就是漢字與數字、英文字母混用
解決方法一:
將textview中的字符全角化。即將所有的數字、字母及標點全部轉為全角字符,使它們與漢字同占兩個字節,這樣就可以避免由於占位導致的排版混亂問題了。 半角轉為全角的代碼如下,只需調用即可。
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); }
解決方法二:
去除特殊字符或將所有中文標號替換為英文標號。利用正則表達式將所有特殊字符過濾,或利用replaceAll()將中文標號替換為英文標號。則轉化之后,則可解決排版混亂問題。
// 替換、過濾特殊字符 public static String StringFilter(String str) throws PatternSyntaxException{ str=str.replaceAll("【","[").replaceAll("】","]").replaceAll("!","!");//替換中文標號 String regEx="[『』]"; // 清除掉特殊字符 Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(str); return m.replaceAll("").trim(); }
2、TextView在顯示中文的時候 標點符號不能顯示在一行的行首和行尾,如果一個標點符號剛好在一行的行尾,該標點符號就會連同前一個字符跳到下一行顯示。
解決方法:在標點符號后加一個空格。
3、一個英文單詞不能被顯示在兩行中( TextView在顯示英文時,標點符號是可以放在行尾的,但英文單詞也不能分開 )。
轉載:http://blog.sina.com.cn/s/blog_821e2bb101011803.html