We have the setError
method for setting an error message with a red exclamation symbol at the end of the box if validation of an EditText returns false:
I want to set a green tick symbol, just like the red exclamation at the end of the box when my validation returns true:
password.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
if (password.getText().toString().length() < 6) {
password.setError("Password should be greater than 6 characters!");
}
else {
//validation is true, so what to put here?
}
}
}
});
}
EDIT 1 Seemingly impossible, but there's more to the problem. I did this:
email.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
String mail = email.getText().toString();
if(!android.util.Patterns.EMAIL_ADDRESS.matcher(mail).matches()) {
email.setError("Please enter a valid email address");
}
else {
Log.i("yay!","Email is valid!!!");
email.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.validated, 0);
}
}
}
});
Though I can see in my logs that yay: Email is valid!!!
, I can't see the validation symbol at the end of the EditText
.
However, to my surprise when I change the if
statement to always false
, I can see both the symbol with the log statement.
Any explanations upon why could this be happening?
You can show drawableRight
when your validation is true.
password.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.rightImage, 0);
and set it back to normal when validation is false.
password.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
I just tested it out in my own project using setError(CharSequence error, Drawable icon)
Get a new Icon:
Go to my drawable folder
adding a new vector asset.
I picked "material icon" and browse,
then picked ic_done_24pp.
Color:
Next, I went into the xml and made it green by changing the fillcolor:android:fillColor="#FF00FF00"
3: Change code:
Drawable myIcon = getResources().getDrawable(R.drawable.ic_done_24dp);
myIcon.setBounds(0, 0, myIcon.getIntrinsicWidth(), myIcon.getIntrinsicHeight());
mPasswordView.setError("Good", myIcon);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With