在設定Android App的時候,常常會需要讓使用者輸入一些文字,但又不想要讓使用者輸入太多文字,要怎麼樣才可以讓文字輸入框能夠限制使用者輸入的長度呢?如果使用者輸入的文字不是只有半形字,而是還有全形字的話,又該怎麼去計算文字長度呢?



以EditText這個View為例,如果要限制EditText輸入文字的最大長度,可以設定它的「maxLength」屬性。在XML下,可以替EditText加入這個屬性,並指定最大的文字長度。如下面的XML語法,將EditText的可輸入的最大字元數量限制在10個:

如果要用Android SDK的Java程式來寫,會比較麻煩一點,可以寫成這樣:

用以上的方式雖然可以快速地限制EditText的文字長度,但是卻會發生半形字和全形字雖然數量一樣,長度看起來卻差很多的問題。如下圖:

此時可以使用以下的解決方案。

MagicTextLengthWatcher

使用MagicTextLengthWatcher這個TextWatcher,可以很輕易地限制EditText的文字長度。預設將一個半形字元的長度用1計算,一個全形字元的長度用2計算(一個全形字的長度等於兩個半形字的意思)。使用方式如下: