Android 如何在 EditText 上设置最大 "word"限制

标签 android android-edittext limit word

如何在 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/

相关文章:

java - 如何在 addTextChangedListener 中使用可扩展字符串来更改 editText 子字符串的颜色?

Python 数量限制

python - 访问冲突 (0xC0000005) NumPy 数组

java - 检测用户正在从 View 页面中的 fragment 上滑开

android - 在 edittext 中输入日语字符的问题

安卓 : How to append String after SQLite Funciton?

android - 你如何在 alertdialog 中引用 EditText?

Azure 机器学习 REST API 请求限制

javascript - onPause() 之后,地理位置在 WebView 上保持 Activity 状态

锁屏后的Android语音识别