解決TextView排版自動換行問題

今天突然發現android項目中的文字排版良莠不齊的狀況很是嚴重,不得不想辦法解決一下。通過研究以後,終於找到了textview自動換行致使混亂的緣由了----半角字符與全角字符混亂所致!通常狀況下,咱們輸入的數字、字母以及英文標點都是半角,因此佔位沒法肯定。它們與漢字的佔位大大的不一樣,因爲這個緣由,致使不少文字的排版都是良莠不齊的。對此我找到了兩種辦法能夠解決這個問題: 

1. 將textview中的字符全角化。即將全部的數字、字母及標點所有轉爲全角字符,使它們與漢字同佔兩個字節,這樣就能夠避免因爲佔位致使的排版混亂問題了。 半角轉爲全角的代碼以下,只需調用便可。  android

/**
     * 半角轉換爲全角
     *
     * @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();     }
相關文章
相關標籤/搜索