清除后 TextInputLayout 不显示错误消息

TextInputLayout not showing error message after clearing

我正在使用来自 com.android.support:design:23.3.0

的 TextInputLayout

当我第一次应用错误时,它显示正确。

mInputPassword.setError(getString(R.string.error_invalid_password));
mInputEmail.setError(getString(R.string.error_field_required));

在下次尝试登录时,我清除了错误。

mInputEmail.setError(null);
mInputPassword.setError(null);

然后我 运行 验证并使用与上面相同的代码再次设置错误,但这次应用了红线,但错误文本丢失了。

有人知道为什么会发生这种情况或遇到过类似情况吗?

我看到了类似的报道 here 但它是针对旧版本的设计库,不知道它是否仍然存在于我使用的版本中,

您正在清除错误消息字符串:

mInputEmail.setError(null);
mInputPassword.setError(null);

因此,当您重新运行验证时,您将得到一个空字符串。

如果您希望错误消息消失,请清除文本视图中的错误文本:

mInputEmail.setText("");
mInputPassword.setText("");

您只需执行以下步骤:

setErrorEnabled(true);
setError("error");

清算:

setError(null);
setErrorEnabled(false);

重复第一步以设置新错误。 setError(null) 清除错误消息和图标,所以我认为要显示的视图已经消失,setErrorEnabled(false) 将重置它。