我对editText元素进行了一些简单的正则表达式验证。我遇到的问题是,如果验证失败(即使用户仍在键入),则错误会立即显示,这不是很好的UX。这是当前的代码。
TextWatcher tw = new TextWatcher() {
public void afterTextChanged(Editable s) {
String currentTime = t_timeEditText.getText().toString();
if (!validTimepattern.matcher(currentTime).matches()){
timeEditText.setError("Not a valid time");
}
}
}
我认为最好的解决方案是等到焦点移出editText元素,然后再运行上述验证。或者,我们可以在上一次输入后等待X毫秒,然后再运行验证,也可以在其中添加一些讨厌的硬编码延迟。
有什么建议?
最佳答案
您可以使用Handler来完成。根据您的要求更改TIME_DELAY。在类(class)级别中定义时间延迟(1000表示1秒)。我已根据您的要求修改了代码。在此我增加了2秒的延迟。你可以去。
val TIME_DELAY : Int = 2000
if (!validTimepattern.matcher(currentTime).matches()){
Handler().postDelayed(object : Runnable{
override fun run() {
timeEditText.setError(“Not a valid time”);
}
}, TIME_DELAY )
}
关于java - 如何在EditText字段上显示错误消息之前增加延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57324687/