我从sqlite数据库中获取了两个字符数组。一个数组包含普通字体字符,另一个数组包含样式字体字符。
问题是,当我选择普通字体字符数组并替换EditText
中输入的字符时。它工作得很完美,但是在EditText
中使用EditText
中的另一个字体字符数组键入了某个字符。然后它替换EditText
中旧的输入字符。
以下是我用来替换EditText
中的字符的代码。
watcher = new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void onTextChanged(CharSequence ss, int start, int before,
int count) {
edt.removeTextChangedListener(watcher);
String str = edt.getText().toString();
String a = styleArray.get(0);
String b = styleArray.get(1);
String c = styleArray.get(2);
str = str.replaceAll("a", a);
str = str.replaceAll("b", b);
str = str.replaceAll("c", c);
edt.setText(str);
edt.addTextChangedListener(watcher);
int position = edt.getText().length();
Editable ed = edt.getText();
Selection.setSelection(ed, position);
}
};
从数据库中获取的两个数组是:
a. {a,b,c}
b. {ⓐ, ⓑ, ⓒ}
示例:当我选择第一个数组{a,b,c}时,在EditText
框中输入的文本是" abc"。从这里可以。但是当我选择另一个字体字符数组{ⓐ,ⓑ,ⓒ}并在edittext中输入文本时,结果必须是这个"abcⓐⓑⓒ"。而不是这个结果"abcⓐⓑⓒ"我正在"ⓐⓑⓒⓐⓑⓒ"。它还会替换旧输入的字符。那么,这背后的逻辑是什么?我尝试了很多,但没有找到解决方案。