我想在我的新应用程序中使用TextInputLayout。我有这样的布局
***
<android.support.design.widget.TextInputLayout
android:id="@+id/input_layout_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:textColorHint="@color/text_color"
app:hintTextAppearance="@style/HintTextAppearance.TextInputLayout"
app:errorTextAppearance="@style/ErrorTextAppearance.TextInputLayout">
<EditText
android:id="@+id/input_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:hint="@string/hint_email"
android:background="@drawable/edit_text_border_radius"
android:padding="10dp"
android:drawableLeft="@drawable/ic_acc"/>
</android.support.design.widget.TextInputLayout>
***
在我的活动中,我有以下验证:
private boolean validatePassword() {
if (inputPassword.getText().toString().trim().isEmpty()) {
inputLayoutPassword.setError(getString(R.string.err_msg_password));
requestFocus(inputPassword);
return false;
} else {
inputLayoutPassword.setError(null);// it removes @drawable/edit_text_border_radius style from EditText
inputLayoutPassword.setErrorEnabled(false);
}
return true;
}
虽然它工作正常,但如果您注意到我已经为EditText声明了@drawable/edit_text_border_radius资源。如果第一次我不填写密码字段,它将更改其背景颜色为红色。因为这是TextInputLayout错误跨度的默认颜色。但是,如果我用某些值填充同一字段,那么红色错误跨度就会消失,但EditText元素却忘记了在之前设置给它的背景资源(@drawable/edit_text_border_radius)。