Проблема решена после того, как много исследований и перестановок - (Также благодаря @van)
Создайте новый класс, который продлит EditText
что-то вроде this-
public class MyEditText extends EditText {
public MyEditText(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void setError(CharSequence error, Drawable icon) {
setCompoundDrawables(null, null, icon, null);
}
}
Используйте этот класс как представление в вашем XML, как this-
<com.raj.poc.MyEditText
android:id="@+id/et_test"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
Сейчас на третьем этапе, просто установите TextWatcher
на ваш произвольный текст вид как this-
et = (MyEditText) findViewById(R.id.et_test);
errorIcon = getResources().getDrawable(R.drawable.ic_error);
errorIcon.setBounds(new Rect(0, 0, errorIcon.getIntrinsicWidth(), errorIcon.getIntrinsicHeight()));
et.setError(null,errorIcon);
et.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
if(s.toString().length()>6){
et.setError("", null);
}else{
et.setError("", errorIcon);
}
}
});
, где R.drawable.ic_error
=
Сохранение текста null разрешает проблему Но если мы сохраняем только null в setError (null), это не покажет ошибку проверки; он должен быть нулевым вместе со вторым параметром.
Таким образом, значок не исчезнет при изменении текста. – Vincent
Да значок не исчезает при вводе правильного текста –
@ Vincent: попробуйте обновленный ответ. Это также работает на 4.2 и решает вашу проблему. Спасибо хоть. – Rajkiran