Как узнать нажатия клавиш в EditText
Мне нужно определять каждое нажатие клавиши на мягкой или жесткой клавиатуре в EditText
. Мне просто нужно отправлять символы по одному, когда они нажаты, и мне не нужна окончательная текстовая строка.
Я попытался использовать EditText
с onKeyPress
, но я столкнулся с проблемами, связанными с отсутствием нажатия клавиш с помощью программных клавиатур, и TextWatcher
не является хорошим вариантом, потому что мне нужно каждое нажатие клавиши. Есть ли решение, чтобы узнать все нажатия клавиш (в том числе назад, Shift, Enter... также)?
Ответы
Ответ 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?