Android 禁用键盘时,未记录EditText错误

Android 禁用键盘时,未记录EditText错误,android,android-layout,android-edittext,android-softkeyboard,Android,Android Layout,Android Edittext,Android Softkeyboard,在我的布局中,我有3个带验证条件的EditText。当软键盘打开时,错误信息将显示在编辑文本的下方。当它变为隐藏时,EditText将向下移动错误消息仍放在布局的顶部 我使用了自定义编辑文本,并且我的布局在滚动视图中仍然错误消息是无法下载编辑文本 我有3个编辑文本和按钮,如果我们点击按钮,它将验证,如果一切都是正确的,它将打开新的活动 否则,如果在编辑文本数据中未输入错误消息,则显示。这是一个过程 当键盘显示错误消息时。键盘get hide edittext将返回到它的位置,但错误消息仍然位于布

在我的布局中,我有3个带验证条件的EditText。当软键盘打开时,错误信息将显示在编辑文本的下方。当它变为隐藏时,EditText将向下移动错误消息仍放在布局的顶部

我使用了自定义编辑文本,并且我的布局在滚动视图中仍然错误消息是无法下载编辑文本

我有3个编辑文本和按钮,如果我们点击按钮,它将验证,如果一切都是正确的,它将打开新的活动

否则,如果在编辑文本数据中未输入错误消息,则显示。这是一个过程


当键盘显示错误消息时。键盘get hide edittext将返回到它的位置,但错误消息仍然位于布局的顶部。

尝试在xml文件的滚动视图中给出此信息

app:layout_behavior="@string/appbar_scrolling_view_behavior"

这似乎是一个尚未修复的错误。但是,您可以通过子类化
EditText
类(即自定义类)并实现其
onKeyPreIme
回调方法来解决此问题

public boolean onKeyPreIme(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
        // User dismissed the keyboard, so hide and re-show the error message
        revalidateEditText();
        return false;
    }

    return super.dispatchKeyEvent(event);
}

public void revalidateEditText(){
       // Dismiss your original error dialog           
       setError(null);

       // Validate the content and re-show the error message if needed
       validate();
}
源自:


请注意,通过实现
onKeyPreIme
,每当用户关闭软键盘时,都会通知您。

在此处显示您的代码以获得更好的帮助如果您需要,它包含大量代码。我可以发布设置错误代码。无需将整个应用程序放在此处,只需将需要修改的部分代码correct@YBDevi请发布您的代码和错误日志。我不知道你除了要做什么?当点击按钮时,它将验证代码是否正常,并显示错误消息。我相信你的编辑有android.support.design.widget.TextInputLayout作为父项TextNo父项是线性布局和scrollview中的布局。请尝试加1之类的操作,因为这是一个错误尚未修复。我是android新手。@YBDevi将这些方法复制并粘贴到您的子类
EditText
。k如果有效,我将尝试此方法。我将接受您的答案。没有其他解决方案解决此问题。我不理解first EditText错误消息完美工作,因为其他两个框的错误被放置在布局顶部不随edittext向下移动。