妥当性検査が赤みがかった色にならないときに私の編集テキストの背景色を変更したい、そして、ユーザーがそれを修正し始めるときに元の色を戻したい。Android EditText Drawableの背景を複製するには?
EditTextには丸みのある罫線があるため、を使用すると、setBackgroundColor()はここでは機能しません。丸い四角形の代わりに醜い矩形を描画するためです。
バックグラウンドを保存して後で復元しようとしました。そしてそれを赤く塗りつぶすために新しいbakgroundを使用してください。 tv.getBackground()は、オリジナルBgとerrorBgの両方に同じ参照を返しますので、次のコードは機能しません。カラーフィルターをerrorBgに設定すると、実際にオリジナルBgに変更されます。
どのように私はので、私はそこに色を変更することができ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.getBackgroundDrawable()が存在しないので、tv.getBackground()を使用しました);-) – ilomambo