6

我正在使用带有 TextInputLayout 的 EditText。这是我用来显示错误的代码。

  private boolean validateEmail() {
    String email = inputEmail.getText().toString().trim();

    if (email.isEmpty() || !isValidEmail(email)) {
        inputLayoutEmail.setErrorEnabled(true);
        inputLayoutEmail.setError(getString(R.string.err_msg_email));
        requestFocus(inputEmail);
        return false;
    } else {
        inputLayoutEmail.setErrorEnabled(false);
    }

    return true;
}

我在edittext的textwatcher中调用这个方法,就像这个链接http://www.androidhive.info/2015/09/android-material-design-floating-labels-for-edittext/

一旦我输入了一个有效的输入然后清除它,它将按预期显示错误消息,但是如果我再次输入文本然后再次清除它,它将不起作用。即它没有显示任何错误消息。

我正在使用compile 'com.android.support:design:23.1.0'图书馆。

inputLayoutEmail.setErrorEnabled(true); 

正在调用但未显示错误。可能是什么问题?我该如何解决这个问题?

4

5 回答 5

41

在您的布局文件中,确保您有layout_height="wrap_content"TextInputLayout 而不是维度。这对我来说是个问题。

于 2017-06-29T17:08:19.363 回答
7

你只需要申请,

inputLayoutEmail.setErrorEnabled(false);
inputLayoutEmail.setError(null);

它对我有用。希望它也对你有用。

于 2016-05-20T13:22:19.343 回答
3

这个例子对我有用。

你用

compile 'com.android.support:design:23.1.0' 

正确的是

compile 'com.android.support:design:23.0.1' 
于 2015-12-17T10:17:41.617 回答
1

我遇到了同样的问题,我正在使用数据绑定,所以添加下面的行解决了我的问题:app:errorEnabled="true"

于 2019-12-30T09:58:24.940 回答
0

使用 Android 支持库,修订版 23.4.0(2016 年 5 月)

修复了在 API 级别 21 - 22TextInputLayout之后不清除错误色调的问题(问题 202829)setErrorEnabled(false)

于 2016-05-16T04:35:08.890 回答