Android 如何限制文字輸入的長度?

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

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

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

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

Android 如何限制文字輸入的長度?

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

MagicTextLengthWatcher

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

關於作者

Magic Len

各位好,我是Magic Len,是這網站的管理員。我是台灣台中大肚山上人,畢業於台中高工資訊科和台灣科技大學資訊工程系,曾在桃機航警局服役。我熱愛自然也熱愛科學,喜歡和別人分享自己的知識與經驗。如果你有興趣認識我,可以加我的Facebook,並且請註明是從MagicLen來的。

相關文章