如果用户键入一个字符串并且它包含 @ 我想将文本的颜色更改为红色。我尝试过使用 textwatcher 但出现堆栈溢出错误。我只想在 @ 开头时更改颜色。代码如下
topic.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) {
if (s.toString().matches("(@\\w+)")) {
topic.setText(Html.fromHtml(s.toString().replaceAll(
"(@\\w+)", "<font color='#ffff0000'>$1</font>")));
}
}
});
在设置新文本以编辑文本之前,您必须删除文本监视程序。
试试这个代码
private TextWatcher textWatcher = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
editText.removeTextChangedListener(this);
String text = editText.getText().toString();
if (text .matches("(@\\w+)")) {
editText.setText(Html.fromHtml(text .replaceAll(
"(@\\w+)", "<font color='#ffff0000'>$1</font>")));
}
editText.addTextChangedListener(this);
}
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)