当键盘被禁用时,EditText错误信息未消失

3
在我的布局中,我有3个EditText并带有验证条件。当软键盘打开时,错误消息将显示在EditText下方。当软键盘隐藏时,EditText将向下移动,但错误消息仍然位于布局顶部。
我使用了自定义EditText,并且我的布局在滚动视图中,但错误消息仍未随EditText一起下移。
我有3个EditText和一个按钮,如果我们点击按钮,则它将进行验证,如果一切正确,则会打开新的活动界面。
否则,如果EditText中没有输入数据,则会显示错误消息。这是一个过程。
当键盘弹出时,错误消息会显示。键盘隐藏后,EditText会回到原来位置,但错误消息仍然在布局顶部。

3
请在此展示您的代码以获得更好的帮助。 - Vickyexpert
如果你想的话,我可以发布一些错误代码。 - YBDevi
不需要将整个应用程序放在此处,只需放置需要更正的代码部分 - Vickyexpert
@YBDevi请发布您的代码和错误日志。我很困惑,您希望做什么? - DysaniazzZ
当按钮被点击时,它会进行验证并显示错误消息,指示代码正常。 - YBDevi
2个回答

2

在你的XML文件中尝试将此代码放入你的滚动视图中

app:layout_behavior="@string/appbar_scrolling_view_behavior"

我相信你的EditText的父视图是android.support.design.widget.TextInputLayout。 - LvN
没有父级是线性布局和在滚动视图中的布局。 - YBDevi
请尝试类似以下代码:<android.support.design.widget.TextInputLayout android:id="@+id/input_layout_name" android:layout_width="match_parent" android:layout_height="wrap_content"> - LvN

1
似乎存在一个尚未修复的错误。但是,您可以通过子类化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,您可以在用户关闭软键盘时收到通知。
源自: Android:EditText上的错误弹出框在键盘消失时不会向下移动

加一,因为这是一个尚未修复的错误。 - LvN
我是Android的新手。 - YBDevi
我会尝试这个方法,如果有效的话,我会接受你的答案。对于这个问题,没有其他解决方案。 - YBDevi
@YBDevi 你说的“...其他两个框错误...”是什么意思? - frogatto
两个框指的是两个编辑框,如果您输入错误,请不要介意。 - YBDevi
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接