Android TextView自動換行文字排版參差不齊的原因


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM