首页 > 解决方案 > 如何知道用户何时完成了 EditText 控件上的文本输入?

问题描述

我希望能够知道用户何时在 EditText 控件中输入文本。我在想也许最好知道键盘何时关闭或类似的东西。这是在 Android 应用程序上使用 Kotlin。我不确定为什么很难找到这样的基本答案。也许我正在搜索错误的问题(Android 开发人员的新手)。

标签: androidkotlin

解决方案


使用键盘关闭作为用户完成输入文本的指示是一个坏主意(用户可能会再次打开键盘以输入更多文本)。更好的解决方案是明确要求用户表明他已完成输入数据。

您可以使用“提交”按钮。

您还可以设置android:imeOptionsof并在EditTextactionDone设置侦听器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;
    } 
});

更新- 由于几个原因,假设键盘关闭指示器是坏的,

  1. 没有“正确”的方法来监控软键盘。您可以尝试聆听焦点,EditText也可以使用高度差来猜测软键盘是打开还是关闭(大多数键盘侦听器库中使用的选项)。但这些都不可靠,可能会在生产中中断。
  2. 对于用户来说,这是一个“意外”的应用程序行为。例如,可以通过按返回按钮来移除键盘。通常,如果按下后退按钮,用户会期望该操作不会继续。但是如果你听键盘关闭,那么它最终会导致较差的用户体验。
  3. 没有任何实际原因要使用键盘关闭作为触发器。如果您想在用户键入时执行操作,那么您应该使用TextWatcher,否则坚持使用明确的确认选项。

推荐阅读