亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

淺談Android textview文字對齊換行的問題

 更新時間:2018年01月22日 10:00:53   作者:mikejaps  
下面小編就為大家分享一篇淺談Android textview文字對齊換行的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

今天忽然發(fā)現(xiàn)android項目中的文字排版參差不齊的情況非常嚴(yán)重,不得不想辦法解決一下。

經(jīng)過研究之后,終于找到了textview自動換行導(dǎo)致混亂的原因了----半角字符與全角字符混亂所致!一般情況下,我們輸入的數(shù)字、字母以及英文標(biāo)點都是半角,所以占位無法確定。

它們與漢字的占位大大的不同,由于這個原因,導(dǎo)致很多文字的排版都是參差不齊的。

對此我找到了兩種辦法可以解決這個問題:

1. 將textview中的字符全角化。

即將所有的數(shù)字、字母及標(biāo)點全部轉(zhuǎn)為全角字符,使它們與漢字同占兩個字節(jié),這樣就可以避免由于占位導(dǎo)致的排版混亂問題了。 半角轉(zhuǎn)為全角的代碼如下,只需調(diào)用即可。

/** 
  * 半角轉(zhuǎn)換為全角 
  * 
  * @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)的對應(yīng)關(guān)系是:均相差65248 
    c[i] = (char) (c[i] - 65248); 
  } 
  return new String(c); 
 } 

2. 去除特殊字符或?qū)⑺兄形臉?biāo)號替換為英文標(biāo)號。

利用正則表達式將所有特殊字符過濾,或利用replaceAll()將中文標(biāo)號替換為英文標(biāo)號。則轉(zhuǎn)化之后,則可解決排版混亂問題。

/** 
  * 去除特殊字符或?qū)⑺兄形臉?biāo)號替換為英文標(biāo)號 
  * 
  * @param str 
  * @return 
  */ 
 public static String stringFilter(String str) { 
  str = str.replaceAll("【", "[").replaceAll("】", "]") 
    .replaceAll("!", "!").replaceAll(":", ":");// 替換中文標(biāo)號 
  String regEx = "[『』]"; // 清除掉特殊字符 
  Pattern p = Pattern.compile(regEx); 
  Matcher m = p.matcher(str); 
  return m.replaceAll("").trim(); 
 } 

解決之前層次不齊的排版截圖:

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

以上這篇淺談Android textview文字對齊換行的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論