Как обнаружить символьные нажатия клавиш? - PullRequest
4 голосов
/ 29 июня 2011

Я знаю, как слушать при нажатии кнопки ENTER в TextView, как показано в коде ниже:

textView.setOnKeyListener(new View.OnKeyListener() {
    public boolean onKey(View v, int keyCode, KeyEvent event) {
            if((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
                enterPressed();
                return true;
            }
            return false;
        }
});

Однако ... как мне слушать, когда нажимаются символьная клавиша (A-Z, 0-9, специальные символы и т. Д.), В основном все остальное, кроме ENTER, BACKSPACE или SPACE? Я хочу сделать это, потому что я хочу, чтобы кнопка стала активной, когда пользователь начал вводить текст в TextView. Как ни странно, метод onKey () даже не вызывается при нажатии этих символьных клавиш, так что, я полагаю, есть другой способ их прослушать? Заранее спасибо!

Ответы [ 3 ]

6 голосов
/ 29 июня 2011

Наблюдатель за текстом может вам помочь

textView.addTextChangedListener(new TextWatcher(){

    @Override
    public void afterTextChanged(Editable arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        // TODO Auto-generated method stub

    }

});
1 голос
/ 07 июня 2013

"Нажатие клавиш в программных клавиатурах обычно НЕ запускает этот метод, хотя некоторые могут решить сделать это в некоторых ситуациях. Не предполагайте, что программный метод ввода должен основываться на клавише; даже если это так, он может использовать клавишунажимает не так, как вы ожидаете, поэтому невозможно надежно фиксировать нажатия программных клавиш. "

http://developer.android.com/reference/android/view/View.OnKeyListener.html

0 голосов
/ 29 июня 2011

вам нужно написать функцию, похожую на isCharacter (int). Передать keyCode KeyEvent в эту функцию, чтобы проверить, каков диапазон int - в диапазоне символов, который вы хотите для алфавитов и цифр, еслипоэтому returnTrue в функции, нажатой вами на клавиатуре, может иметь значение true или false, возвращаемое из isCharacter ...

...