我有一个EditText给用户评论。现在我想输入限制将是500字。 这意味着用户最多可以写500条评论。 我该如何实现呢?请帮帮我。
答案 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
?)。
最后,通过字数统计验证是非常不确定的。请记住,
(字符160)之类的东西可以用作空格,但不会被这个空间拾取。您远更好地选择设定的字符数限制并使用已提供的maxLength
答案限制字段。
答案 1 :(得分:-1)
我尝试在XML文件中编写此文件,但它不起作用:
这个确实有效并且实际上是一个更好的问题解决方案,您也可以将它用于自定义验证规则:
InputFilter maxChars = new InputFilter.LengthFilter(500); // 500个字符 editText.setFilters(new InputFilter [] {maxChars});