2

ユーザーコメントを付けるためのEditTextがあります。今度は500語に制限を入力したいと思います。つまり、ユーザーは最大500語のコメントを書くことができます。どうすればこれを実装できますか?私を助けてください。

4

2 に答える 2

9

を使用してテキストを監視し、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?)を彼らに与えます。

最後に、単語数による検証は非常に困難です。&nbsp;スペースとして使用できるが、これでは検出されない(文字160)のようなものがあることを忘れないでください。設定された文字数制限を選択し、すでに提供されている回答を使用してフィールドを制限することをお勧めしますmaxLength

于 2012-08-07T05:06:09.587 に答える
-1

これをXMLファイルで書いてみましたが、機能しません。

これは確かに機能し、実際には問題に対するより良い解決策であり、カスタム検証ルールにも使用できます。

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

于 2012-08-07T05:57:02.827 に答える