2011-03-14 123 views
5

當我使用InputFilter.LengthFilter設置editText的最大字符數限制後,是否有辦法讓editText在達到最大字符數後在onTextChanged上作出反應?如果沒有,是否有一個簡單的方法來設置一個最大數量的字符到editText,並仍然在onTextChanged事件上作出反應?由於android editText最大限制

回答

12

在XML本身的EditText給出以下ATTRIB,

android:maxLength="20" 

感謝。

+0

我的最大長度是可變的......它取決於一些變量,所以我必須從代​​碼中設置它。 – 2011-03-14 13:42:21

+2

然後試試這個InputFilter [] FilterArray = new InputFilter [1]; FilterArray [0] = new InputFilter.LengthFilter(variable); editEntryView.setFilters(FilterArray); – 2011-03-14 13:52:30

+0

這是我所做的,但達到最大限制後,當用戶想要輸入時,我無法解決事件 – 2011-03-14 13:58:41

0

我正在經歷同樣的問題,所以一些研究讓我得到了這個解決方案。感謝@ njzk2的輝煌解決方案。在這裏發佈,以便其他人可以得到答案。

maxLength屬性EditText實際上是一個InputFilter,您可以自己寫,並從代碼提供。

你可以看看InputFilter.LengthFilter的實現,如果沒有溢出,基本上返回null。 (見link

一點點修改是:創建一個擴展InputFilter.LengthFilter在你打電話super並把它比作null來決定,如果你需要顯示一個警告。

editText.setInputFilters(new InputFilter[] { 
    new InputFilter.LengthFilter(max) { 
     public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { 
      CharSequence res = super.filter(source, start, end, dest, dstart, dend); 
      if (res != null) { // Overflow 
        Toast.makeText(this,"OVERFLOW!",Toast.LENGTH_SHORT).show(); 

      } 
      return res; 
     } 
    } 
});