android - 如何知道用户何时完成了 EditText 控件上的文本输入?
问题描述
我希望能够知道用户何时在 EditText 控件中输入文本。我在想也许最好知道键盘何时关闭或类似的东西。这是在 Android 应用程序上使用 Kotlin。我不确定为什么很难找到这样的基本答案。也许我正在搜索错误的问题(Android 开发人员的新手)。
解决方案
使用键盘关闭作为用户完成输入文本的指示是一个坏主意(用户可能会再次打开键盘以输入更多文本)。更好的解决方案是明确要求用户表明他已完成输入数据。
您可以使用“提交”按钮。
您还可以设置android:imeOptions
of并在EditText
上actionDone
设置侦听器EditText
。
editText.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(EditText v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
//do your stuff
return true;
}
return false;
}
});
更新- 由于几个原因,假设键盘关闭指示器是坏的,
- 没有“正确”的方法来监控软键盘。您可以尝试聆听焦点,
EditText
也可以使用高度差来猜测软键盘是打开还是关闭(大多数键盘侦听器库中使用的选项)。但这些都不可靠,可能会在生产中中断。 - 对于用户来说,这是一个“意外”的应用程序行为。例如,可以通过按返回按钮来移除键盘。通常,如果按下后退按钮,用户会期望该操作不会继续。但是如果你听键盘关闭,那么它最终会导致较差的用户体验。
- 没有任何实际原因要使用键盘关闭作为触发器。如果您想在用户键入时执行操作,那么您应该使用
TextWatcher
,否则坚持使用明确的确认选项。
推荐阅读
- java - Spring Boot 2:测试安全端点
- ruby - ruby/RoR 一直从串口读取以及从接口读取
- angular - 用于加载不同数据的布尔值
- php - 如何修复警告:count(): 参数必须是在 C:\wamp64\www\newdatabase\datalist.php 中实现 Countable 的数组或对象,第 983 行
- c# - 如何在 Unity3d 中检测网格碰撞?
- android - 如何在我的设备上自动配对我的 BLE 外设?
- javascript - 如何将文本从 inputtext 传递到 URL?
- symfony - 传递给 *** 的 Symfony 参数 n 必须是 Swift_Mailer 的实例,给定为空
- scala - 如何在失败的情况下使用多个期货
- docker - 运行自定义脚本后 Docker nginx 未启动