【发布时间】:2017-03-15 05:35:58
【问题描述】:
我们如何将EditText 的长度限制为一定的字数(100 个字)。
即使从某个地方复制大文本,粘贴时也只能接受 100 个单词。
我知道我们可以通过字符数来限制它 (maxLength)
我尝试使用以下代码,但它并没有将其限制在 100 个字以内,而且它允许复制粘贴大文本。
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int start, int count, int after) {
int wordsLength = countWords(charSequence.toString());// words.length;
// count == 0 means a new word is going to start
if (count == 0 && wordsLength >= MAX_WORD_LIMIT) {
int charLength = mDescription.getText().length();
setCharLimit(mDescription, charLength > 0 ? charLength - 2 : charLength);
} else {
removeFilter(mDescription);
}
和
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;
}
}
【问题讨论】:
-
在 xml 中改用 maxLength。
-
maxLength有什么问题? -
@Redman:这不是重复的,我需要通过字数来控制它
-
@KiranBennyJoseph:它将限制字符数