我想改變我的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