如何在 Android EditText
上设置最大字数限制我知道如何设置字符限制,但我正在寻找字数限制。
最佳答案
您需要将 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
Paste事件[read more]
关于Android 如何在 EditText 上设置最大 "word"限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28823898/