我想在 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 回答