Подтвердить что ты не робот

Как узнать нажатия клавиш в EditText

Мне нужно определять каждое нажатие клавиши на мягкой или жесткой клавиатуре в EditText. Мне просто нужно отправлять символы по одному, когда они нажаты, и мне не нужна окончательная текстовая строка.

Я попытался использовать EditText с onKeyPress, но я столкнулся с проблемами, связанными с отсутствием нажатия клавиш с помощью программных клавиатур, и TextWatcher не является хорошим вариантом, потому что мне нужно каждое нажатие клавиши. Есть ли решение, чтобы узнать все нажатия клавиш (в том числе назад, Shift, Enter... также)?

4b9b3361

Ответ 1

Если у вас есть EditText, то вы можете использовать интерфейс TextWatcher. В моем коде search_edit является 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                  
    }
});

Ответ 2

Используйте addTextChangedListener(TextWatcher watcher) и реализуйте интерфейс TextWatcher.

Ответ 3

Внедрите это:

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

Обновление:

Как вы хотели бы реализовать Soft Key listener, вы можете реализовать TextWatcher. Вот пример: Как использовать класс TextWatcher в Android?