2

我有一个 EditText 给用户评论。现在我想输入限制是 500 字。这意味着用户最多可以写 500 个字的评论。我该如何实施?请帮我。

4

2 回答 2

9

可以使用 aTextWatcher来观看文本,并且不允许超过 500 个单词。

实施你的TextWatcher

final int MAX_WORDS = 500;
final EditText editBox = (EditText) findViewById(<your EditText field>);
editBox.addTextChangedListener(new TextWatcher() {
    public void afterTextChanged(Editable s) {
        // Nothing
    }

    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        // Nothing
    }

    public void onTextChanged(CharSequence s, int start, int before, int count) {
        String[] words = s.toString().split(" "); // Get all words
        if (words.length > MAX_WORDS) {
            // Trim words to length MAX_WORDS
            // Join words into a String
            editBox.setText(wordString);
        }
    }
});

注意:您可能希望使用此线程String[]中的某些内容来加入wordString

然而,坦率地说,这并不是世界上最有效的方法。事实上,String在每个键条目上创建一个整体数组可能非常费力,尤其是在旧设备上。

我个人建议您允许用户输入他们想要的任何内容,然后在他们点击提交时验证字数。如果是<=500文字,允许它,否则拒绝它,并给他们某种信息(a Toast?)告诉他们。

最后,通过字数进行验证非常不确定。请记住,像&nbsp;(character 160) 这样的东西可以用作空格,但不会被它拾取。您最好选择一个设置的字符限制并使用maxLength已经提供的答案限制该字段。

于 2012-08-07T05:06:09.587 回答
-1

我试过在 XML 文件中写这个,但它不起作用:

这肯定有效,实际上是解决问题的更好方法,您也可以将其用于自定义验证规则:

InputFilter maxChars = new InputFilter.LengthFilter(500); // 500 个字符 editText.setFilters(new InputFilter[] { maxChars });

于 2012-08-07T05:57:02.827 回答