EditText输入限制500字?

时间:2012-08-07 04:04:24

标签: android

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

2 个答案:

答案 0 :(得分:9)

可以使用TextWatcher来观看文字,但不允许超过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);
        }
    }
});

注意:您可能希望使用this thread中的内容将String[]加入wordString

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

我个人建议您允许用户输入他们想要的内容,然后在提交时验证字数。如果它是<=500个单词,请允许它,否则拒绝它,并给它们一些告诉它们的消息(Toast?)。

最后,通过字数统计验证是非常不确定的。请记住,&nbsp;(字符160)之类的东西可以用作空格,但不会被这个空间拾取。您更好地选择设定的字符数限制并使用已提供的maxLength答案限制字段。

答案 1 :(得分:-1)

我尝试在XML文件中编写此文件,但它不起作用:

这个确实有效并且实际上是一个更好的问题解决方案,您也可以将它用于自定义验证规则:

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