2015-03-03 132 views

回答

8

您需要將TextChangedListener添加到您的EditText,然後應用InputFilter請參閱以下代碼。

edDesc.addTextChangedListener(new TextWatcher() { 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) {} 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
     int wordsLength = countWords(s.toString());// words.length; 
     // count == 0 means a new word is going to start 
     if (count == 0 && wordsLength >= MAX_WORDS) { 
      setCharLimit(edDesc, edDesc.getText().length()); 
     } else { 
      removeFilter(edDesc); 
     } 

     tvWordCount.setText(String.valueOf(wordsLength) + "/" + MAX_WORDS); 
     } 

    @Override 
    public void afterTextChanged(Editable s) {} 
}); 

private int countWords(String s) { 
    String trim = s.trim(); 
    if (trim.isEmpty()) 
     return 0; 
    return trim.split("\\s+").length; // separate string around spaces 
} 

private InputFilter filter; 

private void setCharLimit(EditText et, int max) { 
    filter = new InputFilter.LengthFilter(max); 
    et.setFilters(new InputFilter[] { filter }); 
} 

private void removeFilter(EditText et) { 
    if (filter != null) { 
     et.setFilters(new InputFilter[0]); 
     filter = null; 
    } 
} 

您必須攔截粘貼事件,以便用戶不應該粘貼超過所需的字數。您可以攔截Android EditText粘貼事件[read more]

+0

仍需要看到粘貼事件:) – 2015-03-03 04:14:42

-2

您可以限制單詞在EditText中輸入。

簡單,添加此

android:maxLength="10" 

全碼:

<EditText 
     android:id="@+id/uname" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:inputType="textPersonName" 
     android:maxLength="10"/> 

官方文檔here

編碼快樂:)

+0

這設置了字符的最大數量,而不是單詞 – CACuzcatlan 2017-03-21 23:06:02

相關問題