谁能解释这种外观上的差异?
SetColorFilter() 作用于背景 Drawable,setBackgroundResource() 是否设置背景颜色。
在 Android 2.3 版本中,我安全地使用 SetColorFilter() 来更改 EditText 的背景颜色,因为通过清除过滤器很容易恢复原始颜色。无需获取并记住它。现在这两种方式似乎有所不同。
这是一个 EditTextPreference 对话框,et 是 EditText id。
public void afterTextChanged(Editable s) {
String source = s.toString();
et.removeTextChangedListener(this);
if( !source.matches("^[0-9]+$") ) {
et.getBackground().setColorFilter(getResources().getColor(R.color.invalid), Mode.OVERLAY);
et.invalidate();
et.selectAll();
} else {
et.getBackground().clearColorFilter();
et.invalidate();
}
et.addTextChangedListener(this);
}
这是使用 SetBackgroundResource() 的相同代码
public void afterTextChanged(Editable s) {
String source = s.toString();
et.removeTextChangedListener(this);
if( !source.matches("^[0-9]+$") ) {
et.setBackgroundResource(R.color.invalid);
et.selectAll();
} else {
et.setBackgroundResource(R.color.valid);
}
et.addTextChangedListener(this);
}