更改后如何更改EditText的颜色?

时间:2013-12-24 18:36:53

标签: android colors

如果文本包含'('和')',我希望更改android EditText的颜色。括号具有特殊含义,字符串需要改变颜色。请任何人帮忙。

5 个答案:

答案 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)的方法

See Documentation

答案 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)

您可以在每次更改后检查输入的字符串,并根据需要对其进行格式化。