Android如何设置最大“字数"对EditText的限制 [英] Android How to set maximum "word" limit on EditText
本文介绍了Android如何设置最大“字数"对EditText的限制的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何在Android上设置最大字数限制EditText
我知道如何设置字符数限制,但是我正在寻找字数限制.
How to set maximum word limit on Android EditText
I know how to set character limit but I am looking for Word Limit.
推荐答案
您需要在EditText
中添加TextChangedListener
,然后应用InputFilter
,请参见以下代码.
You need to add a TextChangedListener
to your EditText
then apply an InputFilter
see the following code.
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
粘贴事件 [了解详情]
You have to intercept Paste event so that user shouldn't be able to paste more than required words. You can intercept Android EditText
Paste event [read more]
这篇关于Android如何设置最大“字数"对EditText的限制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文