Как узнать нажатия клавиш в EditText - PullRequest
28 голосов
/ 19 августа 2011

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

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

Ответы [ 3 ]

55 голосов
/ 10 января 2013

Если у вас 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                  
    }
});
5 голосов
/ 19 августа 2011

Реализуйте это:

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

Обновление:

Если вы хотите реализовать прослушиватель Soft key, вы можете реализовать TextWatcher .Вот пример: Как использовать класс TextWatcher в Android?

4 голосов
/ 19 августа 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...