【问题标题】:Does Android have keyboard listener to detect which key is pressed?Android是否有键盘监听器来检测按下哪个键?
【发布时间】:2020-10-28 12:24:29
【问题描述】:

我想识别在 Android 中按下了键盘上的哪个键。我已经搜索了很多,但我还没有达到正确的答案。 StackOverflow 中的一些帖子我看过但他们没有回答我在这里:

How to listen the keypress in the soft keyboard?

Android - Get keyboard key press

how to find which key is pressed in android?

【问题讨论】:

    标签: android kotlin keyboard


    【解决方案1】:

    您可以使用Android提供的TextWatcher api。

    这里是来自answer 之一的代码 sn-p:

    field1.addTextChangedListener(new TextWatcher() {
    
            @Override
            public void afterTextChanged(Editable s) {
            }
    
            @Override
            public void beforeTextChanged(CharSequence s, int start,
                                          int count, int after) {
            }
    
            @Override
            public void onTextChanged(CharSequence s, int start,
                                      int before, int count) {
                if (s.length() != 0)
                    field2.setText("");
            }
        });
    
        field2.addTextChangedListener(new TextWatcher() {
    
            @Override
            public void afterTextChanged(Editable s) {
            }
    
            @Override
            public void beforeTextChanged(CharSequence s, int start,
                                          int count, int after) {
            }
    
            @Override
            public void onTextChanged(CharSequence s, int start,
                                      int before, int count) {
                if (s.length() != 0)
                    field1.setText("");
            }
        });
    

    编辑 1

    这是用于跟踪在键盘上按下了哪个键的模板:

    editText.setOnKeyListener(new OnKeyListener() {                 
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        //You can identify which key pressed buy checking keyCode value with KeyEvent.KEYCODE_
        if(keyCode == KeyEvent.KEYCODE_DEL) {  
            //this is for backspace
        }else if(keyCode == KeyEvent.KEYCODE_BACK) {  
            //this is for backspace
        }
        return false;       
    }});
    

    【讨论】:

    • 感谢您的回答,如果用户输入退格键或删除键怎么办?! @Deep Lathia
    • 我已经编辑了答案。请检查它是否达到目的。
    • 感谢编辑的答案@Deep Lathia,我想要的是检测按下了哪个键。例如,当用户按下 button-1 时,我想知道这一点。我该怎么做?!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    • 2012-08-05
    • 1970-01-01
    • 2012-04-04
    • 2020-05-30
    • 2021-02-11
    相关资源
    最近更新 更多