如果文本包含'('和')',我希望更改android EditText的颜色。括号具有特殊含义,字符串需要改变颜色。请任何人帮忙。
答案 0 :(得分:3)
对EditText使用TextWatcher
例如
editText.addTextChangedListener(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) {
if (!TextUtils.isEmpty(s)) {
String text = s.toString();
if(text.contains("(") || text.contains(")")) {
editText.setTextColor(Color.RED);
} else {
editText.setTextColor(Color.BLACK);
}
}
}
});
答案 1 :(得分:1)
EditText
扩展TextView
,它有一个名为setTextColor(int color)的方法
答案 2 :(得分:1)
topic.setTextColor(Color.RED);
topic.setTextColor(Color.parseColor("#ffff0000"));
答案 3 :(得分:1)
您可以这样做:
text.addTextChangedListener(new TextWatcher(){
public void afterTextChanged(Editable s) {
if(s.toString().contains("(") && s.toString().contains(")")){
EditText text = (EditText) findViewById(R.id.id_of_text);
text.setTextColor(color);
}
}
public void beforeTextChanged(CharSequence s, int start, int count, int after){}
public void onTextChanged(CharSequence s, int start, int before, int count){}
});
请注意,每次文本更改时都不希望调用findViewById()
因为它很慢,所以全局存储该引用。
修改:请注意color
中的参数setTextColor()
是一种颜色,而不是资源。因此,要从资源中获取颜色,您需要使用以下内容:
getResources().getColor(R.color.color_id);
答案 4 :(得分:1)
你看过TextWatcher
了吗? (link)
您可以在每次更改后检查输入的字符串,并根据需要对其进行格式化。