2

EditTextでユーザーが入力した文字を変更したい。実際、ユーザーがテキストの編集を入力するときに必要です。入力文字が「S」の場合は、「B」文字に置き換えます。これをリアルタイムでやりたい。

4

3 に答える 3

7

EditTextでユーザーが入力した文字を変更したい。実際、ユーザーがテキストの編集を入力するときに必要です。入力文字が「S」の場合は、「B」文字に置き換えます。これをリアルタイムでやりたい。

ほとんどの場合TextWatcher、それを使用する必要があります。これは、目標に合わせて適切に指定されており、EditTextのコンテンツをリアルタイムで操作できるようにします。

例:

edittext.addTextChangedListener(new TextWatcher() {

    public void onTextChanged(CharSequence s, int start, int before, int count) {           

    }

    public void beforeTextChanged(CharSequence s, int start, int count, int after) {    

    }

    public void afterTextChanged(Editable s) {

    }
});
于 2013-03-26T13:50:51.123 に答える
2

Sajmonが説明したように、TextWatcherを実装する必要があります。カーソルに注意する必要があります。ユーザーは、既存のテキスト文字列の任意の位置に次の文字(またはクリップボードからのシーケンス)を入力できるためです。これを処理するには、正しい位置で文字を変更する必要があります(テキスト全体を置き換えないでください)。

        damageEditLongText.addTextChangedListener(new TextWatcher() {

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {}

        @Override
        public void afterTextChanged(Editable s) {
            // Nothing to replace
            if (s.length() == 0)
                return;

            // Replace 'S' by 'B'
            String text = s.toString();
            if (Pattern.matches(".*S.*", text)) {
                int pos = text.indexOf("S");
                s.replace(pos, pos + 1, "B");
            }
        }
    });
于 2016-03-04T13:52:23.647 に答える
0

使用する

EditText textField = findViewById(R.id.textField);
String text = textField.getText().toString();

その後、あなたは使用することができます

text.replace('b','s');

に続く

textField.setText(text,TextView.BufferType);

TextView.BufferTypeは、ここで説明されているように3つの値を持つことができます

于 2013-03-26T13:51:51.140 に答える