Android TextInputLayout 没有显示错误

Android TextInputLayout is not showing error

我正在将 EditText 与 TextInputLayout 结合使用。这是我用来显示错误的代码。

  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 中调用这个方法,就像这样 link http://www.androidhive.info/2015/09/android-material-design-floating-labels-for-edittext/

一旦我输入了有效的输入然后清除它,它会按预期显示错误消息,但是如果我再次输入文本然后清除它就不会工作 again.ie.It 没有显示任何错误消息。

我正在使用 compile 'com.android.support:design:23.1.0' 库。

inputLayoutEmail.setErrorEnabled(true); 

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

这个例子对我有用。

你用

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

右边的是

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

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

修复了 TextInputLayout 在 API 级别 21 - 22 (Issue 202829)

setErrorEnabled(false) 后无法清除错误色调的问题

你只需要申请,

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

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

在布局文件中,确保 TextInputLayout 具有 layout_height="wrap_content" 而不是维度。这导致了我的问题。

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