Android TextInputLayout未显示错误

Anu*_*Anu 2 validation android android-edittext textinputlayout

我正在使用带有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;
}
Run Code Online (Sandbox Code Playgroud)

我在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); 
Run Code Online (Sandbox Code Playgroud)

正在调用,但错误未显示.可能是什么问题?我怎么能解决这个问题?

aar*_*gas 14

在布局文件中,确保TextInputLayout而不是维度具有"wrap_content".这对我来说是个问题.

  • 似乎实际上是layout_height更具体 - 而且它不需要设置为wrap_content本身 - 只需要足够大 - 但是,谢谢,我无法在任何地方找到它! (3认同)
  • 经过 4 个小时的所有课程调查后解决了我的问题..谢谢 (2认同)

小智 6

你只需要申请,

inputLayoutEmail.setErrorEnabled(false);
inputLayoutEmail.setError(null);
Run Code Online (Sandbox Code Playgroud)

它对我有用.希望它也适合你.


Sil*_*ter 3

这个例子对我有用。

你用

compile 'com.android.support:design:23.1.0' 
Run Code Online (Sandbox Code Playgroud)

正确的一个是

compile 'com.android.support:design:23.0.1' 
Run Code Online (Sandbox Code Playgroud)

  • 它第一次工作。第二次开始它没有显示错误。但获得焦点。 (3认同)
  • 好的。我明白了 - 你使用编译'com.android.support:design:23.1.0',正确的一个是编译'com.android.support:design:23.0.1' (2认同)