Android:当键盘消失时,EditText上的错误弹出窗口不会向下移动

Chr*_*rry 12 android popup android-edittext

我有一个活动,在屏幕上显示一些EditTexts用于用户输入.为了确保软键盘显示时我没有覆盖我的字段我已经设置了属性

android:windowSoftInputMode="adjustPan"
Run Code Online (Sandbox Code Playgroud)

我在清单中的活动.我在1时验证EditText的内容.视图失去焦点2.当用户执行'Enter'操作时.验证后,如果该值无效,我正在打电话

setError(CharSequence error)
Run Code Online (Sandbox Code Playgroud)

在EditText上,这会导致弹出窗口显示包含我传入的错误.问题是如果在软键盘显示时向上移动EditText,并且此时显示弹出窗口(验证失败),弹出窗口没有当键盘离开时,请按下EditText,它将保持在首次显示的位置.

有想法该怎么解决这个吗?这是Android中的错误吗?

Blu*_*ell 11

如果这是你所描述的,我认为这可能是一个真正的错误,所以可能值得在Android Source网站上编写它.

显然我只能想到黑客的工作!

键盘消失时覆盖:

public boolean onKeyPreIme(int keyCode, KeyEvent event) {
 if (keyCode == KeyEvent.KEYCODE_BACK && 
     event.getAction() == KeyEvent.ACTION_UP) {
         revalidateEditText();
         return false;
 }
 return super.dispatchKeyEvent(event);
}

public void revalidateEditText(){
       // Dismiss your origial error dialog           
       setError(null);
       // figure out which EditText it is, you already have this code
       // call your validator like in the Q
       validate(editText); // or whatever your equivalent is
}
Run Code Online (Sandbox Code Playgroud)

这将重新验证您的EditText,关闭您的错误对话框并重新显示它.

那声音怎么样?

灵感来自:在EditText上获取关键事件