How to know key presses in EditText

2019-02-02 21:47发布

I need to detect every key press on either a soft or hard keyboard in EditText. I just need to send the characters one at a time as they are pressed and don't need the final text string.

I have tried using an EditText with onKeyPress, but I ran into the problems here with not getting key presses with soft keyboards and TextWatcher isn't a good option because I need each key press. Is there any solution to know all the keypresses (including back, shift, enter... also)?

3条回答
劳资没心,怎么记你
2楼-- · 2019-02-02 22:22

If you have an EditText, then you can use the TextWatcher interface. In my code, search_edit is an EditText.

search_edit.addTextChangedListener(new TextWatcher() {          
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {                                   
        //here is your code
        myadapter.getFilter().filter(s);
        listview.setAdapter(myadapter); 
    }                       
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        // TODO Auto-generated method stub                          
    }                       
    @Override
    public void afterTextChanged(Editable s) {
        // TODO Auto-generated method stub                  
    }
});
查看更多
欢心
3楼-- · 2019-02-02 22:25

Use addTextChangedListener(TextWatcher watcher) and implement TextWatcher interfaace.

查看更多
走好不送
4楼-- · 2019-02-02 22:38

Implement this:

myEditText.setOnKeyListener(new OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_ENTER) { 
            /* do something */ 
        }
    }
});

Update:

As you would like to implement Soft key listener, you can implement TextWatcher. Here is example: How to use the TextWatcher class in Android?

查看更多
登录 后发表回答