淺談Android textview文字對齊換行的問題
今天忽然發(fā)現(xiàn)android項目中的文字排版參差不齊的情況非常嚴重,不得不想辦法解決一下。
經(jīng)過研究之后,終于找到了textview自動換行導致混亂的原因了----半角字符與全角字符混亂所致!一般情況下,我們輸入的數(shù)字、字母以及英文標點都是半角,所以占位無法確定。
它們與漢字的占位大大的不同,由于這個原因,導致很多文字的排版都是參差不齊的。
對此我找到了兩種辦法可以解決這個問題:
1. 將textview中的字符全角化。
即將所有的數(shù)字、字母及標點全部轉為全角字符,使它們與漢字同占兩個字節(jié),這樣就可以避免由于占位導致的排版混亂問題了。 半角轉為全角的代碼如下,只需調(diào)用即可。
/**
* 半角轉換為全角
*
* @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) {// 全角空格為12288,半角空格為32
c[i] = (char) 32;
continue;
}
if (c[i] > 65280 && c[i] < 65375)// 其他字符半角(33-126)與全角(65281-65374)的對應關系是:均相差65248
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();
}
解決之前層次不齊的排版截圖:

解決之后的整齊排版,如下圖:

以上這篇淺談Android textview文字對齊換行的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Android自定義View實現(xiàn)柱狀波形圖的繪制
柱狀波形圖是一種常見的圖形。一個個柱子按順序排列,構成一個波形圖。本文將利用Android自定義View實現(xiàn)柱狀波形圖的繪制,需要的可以參考一下2022-08-08
Android ViewPager無限循環(huán)滑動并可自動滾動完整實例
對于Android ViewPager廣告頁可無限循環(huán)滑動并可自動滾動帶有小圓點的這個功能很多APP都有這個功能,這里為大家提供了完整的實例代碼2018-03-03
Android通過json向MySQL中讀寫數(shù)據(jù)的方法詳解【寫入篇】
這篇文章主要介紹了Android通過json向MySQL中讀寫數(shù)據(jù)的方法,結合實例形式較為詳細的分析了Android json類的定義、調(diào)用及php接收json數(shù)據(jù)并寫入mysql的實現(xiàn)技巧,需要的朋友可以參考下2016-06-06
Android編程實現(xiàn)Gallery中每次滑動只顯示一頁的方法
這篇文章主要介紹了Android編程實現(xiàn)Gallery中每次滑動只顯示一頁的方法,涉及Android擴展Gallery控件實現(xiàn)翻頁效果控制的功能,涉及Android事件響應及屬性控制的相關技巧,需要的朋友可以參考下2015-11-11
Android AIDL中Map參數(shù)傳遞的問題詳解
這篇文章主要給大家介紹了關于Android AIDL中Map參數(shù)傳遞問題的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友下面來一起看看吧。2017-12-12
Android使用Intent發(fā)送短信的實現(xiàn)方法
這篇文章主要介紹了Android使用Intent發(fā)送短信的實現(xiàn)方法,結合簡單實例形式分析了Android短信發(fā)送功能的實現(xiàn)技巧,需要的朋友可以參考下2016-07-07

