我有的
我有一个注册表单,我在其中使用TextWatcher
. 我使用TextInputLayout
支持库来突出显示错误
我的问题
当我在我的中输入不正确的数据时,我EditText
的颜色TextInputLayout
变为EditText
red
然后,当我在我的输入正确的输入EditText
,然后更改focus
为其他字段时,仍然第一个EditText
是红色的,没有更改为正常的 editext 背景
我试过的
我尝试以EditText
编程方式将我的背景设置为我的自定义 drawable ,但它给了我其他的外观和感觉(其他颜色)
也试过只改成HintColor
红色TextInputLayout
而不使用setError()
方法,还是没有结果
我的代码
第一种方法:给我一些其他颜色的背景
public boolean validateFirstName() {
mFirstName = edFirstName.getText().toString().trim();
if (mFirstName.isEmpty()) {
tiFirstName.setError(mEmptyFields);
edFirstName.requestFocus();
return false;
} else {
tiFirstName.setError(null);
tiFirstName.setErrorEnabled(false);
edFirstName.setBackground(getResources().getDrawable(R.drawable.ed_line_bg));
}
return true;
}
第二种方法:没有看到任何变化:(
public boolean validateFirstName() {
mFirstName = edFirstName.getText().toString().trim();
if (mFirstName.isEmpty()) {
edFirstName.requestFocus();
changeTextInputLayoutColorToRed(tiFirstName);
return false;
} else {
changeTextInputLayoutColorToNormal(tiFirstName);
edFirstName.setBackground(null);
}
return true;
}
public void changeTextInputLayoutColorToRed(TextInputLayout textInputLayout){
int redColor=getResources().getColor(android.R.color.holo_red_dark);
// textInputLayout.getEditText().setHighlightColor(redColor);
textInputLayout.getEditText().setHintTextColor(redColor);
textInputLayout.setError(mErrorMessage);
textInputLayout.setErrorEnabled(true);
}
public void changeTextInputLayoutColorToNormal(TextInputLayout textInputLayout){
int normalColor=getResources().getColor(R.color.text_color);
//textInputLayout.getEditText().setHighlightColor(normalColor);
textInputLayout.getEditText().setHintTextColor(normalColor);
textInputLayout.setError(null);
textInputLayout.setErrorEnabled(false);
}