Android:有什么方法可以确定何时在Edittext软键盘上按下/取消按键?

乔恩

我有一个自动完成的edittext字段,每次文本更改时都会向服务器发送查询,但是,如果用户键入大量文本然后按下“删除”,我不想为每个删除的字符发送查询。解决此问题的一种方法是在输入字符时缓存所有查询,然后在删除时回放缓存-但在我看来,这不必要地复杂。一种更简单的方法是检测按下/按下键,然后仅在文本已更改但用户也没有触摸键盘的情况下发送查询。这使我面临如何从软键盘捕获键盘输入的困难。

我已经尝试过ontouchlistener(不触发)和onkeypressedlistener(也不触发),甚至覆盖edittext中的onKeyPreIme(也不触发)。有没有办法做到这一点?

乔恩

我的最终解决方案是将Andrea的答案与Jelle的答案相结合。我记录了上一次在textwatcher中按下某个键的时间,然后仅在此之后500毫秒对它进行测试-为了确定这是最后一次按下的键:

private static long lastCharacterPress = 0l;
private Editable stringToSearchFor;
private Handler delayedCharacterCheck;

    edittext.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(Editable s) {

            lastCharacterPress = System.currentTimeMillis();
            stringToSearchFor = s;

            if (s.length() > 2) {

                delayedCharacterCheck.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        checkIfTimeHasPassed();
                    }
                }, 500);

            } else ...

        }
    });

然后我把这种方法:

private void checkIfTimeHasPassed() {
        if (!TextUtils.isEmpty(stringToSearchFor) && edittext.getText().length() > 2 && System.currentTimeMillis() - lastCharacterPress > 499) {
                // perform the actual query
        }
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在editText中完全清除焦点,就像按下软键盘上的“完成”按钮一样

来自分类Dev

ANDROID:从Android软键盘获取按键

来自分类Dev

在没有EditText的情况下在NumberPassword模式下强制Android的软键盘

来自分类Dev

Android:如何在软键盘上触发任何按键事件?

来自分类Dev

Android:检测何时启用软键盘

来自分类Dev

Angular2/Nativescript:在软键盘上按下返回键时提交表单

来自分类Dev

android中的软键盘隐藏了EditText

来自分类Dev

android软键盘覆盖EditText集中

来自分类Dev

软键盘上的DialogFragment

来自分类Dev

软键盘上的DialogFragment

来自分类Dev

我可以在软键盘上删除点(。)吗?

来自分类Dev

Android ScrollView,在软键盘上的操作栏下方

来自分类Dev

在软键盘上显示ankushsachdeva表情符号(Android)

来自分类Dev

Android Lollipop软键盘不接受带有GL表面的按键

来自分类Dev

Android-是否可以在没有输入字段和打开软键盘的情况下截取输入事件?

来自分类Dev

软键盘覆盖editText

来自分类Dev

软键盘覆盖editText

来自分类Dev

软键盘在多行EditText下隐藏按钮吗?

来自分类Dev

为什么EditText隐藏在软键盘后面

来自分类Dev

Android单击EditText不会显示软键盘

来自分类Dev

Android EditText setText导致软键盘冻结

来自分类Dev

Android单击EditText不会显示软键盘

来自分类Dev

隐藏Android软键盘,仅允许EditText上的数字

来自分类Dev

停止 setText() 在 EditText 上显示 Android 软键盘

来自分类Dev

AlertDialog EditText不显示软键盘

来自分类Dev

软键盘在EditText上

来自分类Dev

AlertDialog EditText不显示软键盘

来自分类Dev

如何将软键盘隐藏在EditText的“确定”上并再次显示

来自分类Dev

在没有编辑文本的情况下在软键盘上捕获完成的操作?

Related 相关文章

  1. 1

    如何在editText中完全清除焦点,就像按下软键盘上的“完成”按钮一样

  2. 2

    ANDROID:从Android软键盘获取按键

  3. 3

    在没有EditText的情况下在NumberPassword模式下强制Android的软键盘

  4. 4

    Android:如何在软键盘上触发任何按键事件?

  5. 5

    Android:检测何时启用软键盘

  6. 6

    Angular2/Nativescript:在软键盘上按下返回键时提交表单

  7. 7

    android中的软键盘隐藏了EditText

  8. 8

    android软键盘覆盖EditText集中

  9. 9

    软键盘上的DialogFragment

  10. 10

    软键盘上的DialogFragment

  11. 11

    我可以在软键盘上删除点(。)吗?

  12. 12

    Android ScrollView,在软键盘上的操作栏下方

  13. 13

    在软键盘上显示ankushsachdeva表情符号(Android)

  14. 14

    Android Lollipop软键盘不接受带有GL表面的按键

  15. 15

    Android-是否可以在没有输入字段和打开软键盘的情况下截取输入事件?

  16. 16

    软键盘覆盖editText

  17. 17

    软键盘覆盖editText

  18. 18

    软键盘在多行EditText下隐藏按钮吗?

  19. 19

    为什么EditText隐藏在软键盘后面

  20. 20

    Android单击EditText不会显示软键盘

  21. 21

    Android EditText setText导致软键盘冻结

  22. 22

    Android单击EditText不会显示软键盘

  23. 23

    隐藏Android软键盘,仅允许EditText上的数字

  24. 24

    停止 setText() 在 EditText 上显示 Android 软键盘

  25. 25

    AlertDialog EditText不显示软键盘

  26. 26

    软键盘在EditText上

  27. 27

    AlertDialog EditText不显示软键盘

  28. 28

    如何将软键盘隐藏在EditText的“确定”上并再次显示

  29. 29

    在没有编辑文本的情况下在软键盘上捕获完成的操作?

热门标签

归档