我有代码通过TextWatcher更改EditText的背景,如下所示:
etPin1.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
switch (etPin1.length()){
case 0:
etPin1.setBackgroundResource(R.drawable.zero);
break;
case 1:
etPin1.setBackgroundResource(R.drawable.one);
break;
case 2:
etPin1.setBackgroundResource(R.drawable.two);
break;
case 3:
etPin1.setBackgroundResource(R.drawable.three);
break;
case 4:
etPin1.setBackgroundResource(R.drawable.four);
// getPassowrdAgain(s.toString());
validateAndProceed(s.toString(),view);
break;
}
}
});
但是当出现错误时,我需要通过在EditText中短时间显示红色背景并重置它来显示一些短动画。这是用于此目的的代码:
Drawable backgrounds[] = new Drawable[2];
Resources res = getResources();
backgrounds[0] = res.getDrawable(R.drawable.zero);
backgrounds[1] = res.getDrawable(R.drawable.error_pin);
TransitionDrawable crossfader = new TransitionDrawable(backgrounds);
etPin1.setBackgroundDrawable(crossfader);
crossfader.startTransition(3000);
// Reverse transition
crossfader.reverseTransition(3000);
现在,当我尝试更改文本并期望背景中的更改不会发生时,交叉渐变器工作正常。我应该删除交叉渐变器,或者如果是这样,我该怎么做呢。 在此之后甚至没有调用textwatcher