ユーザーコメントを付けるためのEditTextがあります。今度は500語に制限を入力したいと思います。つまり、ユーザーは最大500語のコメントを書くことができます。どうすればこれを実装できますか?私を助けてください。
2 に答える
を使用してテキストを監視し、500語を超えないようにすることができます。TextWatcher
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
言葉なら、それを許可し、そうでなければそれを否定し、彼らに伝えるある種のメッセージ(Toast
?)を彼らに与えます。
最後に、単語数による検証は非常に困難です。
スペースとして使用できるが、これでは検出されない(文字160)のようなものがあることを忘れないでください。設定された文字数制限を選択し、すでに提供されている回答を使用してフィールドを制限することをお勧めします。maxLength
これをXMLファイルで書いてみましたが、機能しません。
これは確かに機能し、実際には問題に対するより良い解決策であり、カスタム検証ルールにも使用できます。
InputFilter maxChars = new InputFilter.LengthFilter(500); // 500文字editText.setFilters(new InputFilter [] {maxChars});