更改用户在Android中的EditText中输入的字符
问题描述:
我想在EditText中更改用户输入的字符。实际上,当用户输入编辑文本时,我想要的是,如果输入字符是“S”,则用“B”字符替换它。我想要这样做实时。更改用户在Android中的EditText中输入的字符
答
我想在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) {
}
});
答
使用
EditText textField = findViewById(R.id.textField);
String text = textField.getText().toString();
那么你可以使用之后
textField.setText(text,TextView.BufferType);
text.replace('b','s');
TextView.BufferType可以有3个值表示here
答
像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");
}
}
});
你有什么尝试? – 2013-03-26 13:48:39
您可以使用TextWatcher。 http://developer.android.com/reference/android/text/TextWatcher.html – Alex 2013-03-26 13:49:31