我有一个 EditText 给用户评论。现在我想输入限制是 500 字。这意味着用户最多可以写 500 个字的评论。我该如何实施?请帮我。
问问题
1783 次
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
?)告诉他们。
最后,通过字数进行验证非常不确定。请记住,像
(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 回答