今天忽然發現android專案中的文字排版參差不齊的情況非常嚴重,不得不想辦法解決一下。經過研究之後,終於找到了textview自動換行導致混亂的原因了----半形字元與全形字符混亂所致!一般情況下,我們輸入的數字、字母以及英文標點都是半形,所以佔位無法確定。它們與漢字的佔位大大的不同,由於這個原因,導致很多文字的排版都是參差不齊的。對此我找到了兩種辦法可以解決這個問題:
1. 將textview中的字元全角化。即將所有的數字、字母及標點全部轉為全形字符,使它們與漢字同佔兩個位元組,這樣就可以避免由於佔位導致的排版混亂問題了。 半形轉為全形的**如下,只需呼叫即可。
12. 去除特殊字元或將所有中文標號替換為英文標號。利用正規表示式將所有特殊字元過濾,或利用replaceall()將中文標號替換為英文標號。則轉化之後,則可解決排版混亂問題。/**2
* 半形轉換為全形3*
4* @param
input5*
@return6*/
7public
static string todbc(string input)
14if (c[i] > 65280 && c[i] < 65375)
15 c[i] = (char) (c[i] - 65248);
16 }
17return
new string(c);
18 }
1解決之前層次不齊的排版截圖:/**2
* 去除特殊字元或將所有中文標號替換為英文標號3*
4* @param
str5
* @return6*/
7public
static string stringfilter(string str)
解決之後的整齊排版,如下圖:
TextView排版問題解決
在專案開發中有些需求和在開發中的習慣不一樣,比如我們遇到的textview在設定了文字之後出現不該換行的時候換行的問題。網上搜尋了下大概有那麼幾種辦法,小菜也試了幾個,發現有的不顯示,有的達不到效果,後來想了想重新寫textview應該可以解決問題。廢話不多說,看下邊 override protec...
TextView排版混亂或者自動換行的問題
其實在textview中遇到排版自動換行而導致混亂不堪的情況是非常常見的,而且導致這種問題產生的原因就是英文和中文混合輸入,半形字元和全形字符混合在一起了。一般情況下,我們輸入的數字 字母以及英文標點都是半形字元,所以佔位無法確定,它們與漢字的佔位不同,由於這個原因,導致很多文字的排版都是參差不齊的...
textView排版文字對齊
具有特殊字元半形全形字符時排版文字對齊 import android.content.context import android.graphics.canvas import android.graphics.paint import android.text.layout import andr...