我想改变我的EditText的背景颜色,当验证失败的瑞迪施彩色,然后,当用户开始改正它,回到原来的颜色。Android如何复制EditText Drawable Background?
的EditText上有圆形边框,因此使用setBackgroundColor()这里行不通,因为它绘制一个矩形难看,而不是漂亮的圆角矩形。
我试图挽救背景和事后恢复。并用一个新的背景将它涂成红色。下面的代码不起作用,因为tv.getBackground()返回相同的,参照上述两个originalBg和errorBg。当我彩色滤光片设置为errorBg我真正改变它originalBg了。
我怎样才能复制背景物体进入errorBg这样我就可以改变颜色吗?
final Drawable originalBg = tv.getBackground();
final Drawable errorBg = tv.getBackground(); <-- this does not create a new Drawable, just the same reference
errorBg.setColorFilter(0xFFff6347, Mode.MULTIPLY);
tv.setBackgroundDrawable(errorBg);
tv.invalidate();
tv.addTextChangedListener(new TextWatcher() {
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
tv.setBackgroundDrawable(originalBg);
tv.invalidate();
}
public void afterTextChanged(Editable s) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {}
});
就是这样。它非常完美! (我用tv.getBackground()因为tv.getBackgroundDrawable()不存在);-) – ilomambo