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