Мой вариант использования - ограничить пользователя после того, как он ввел 4 строки в текстовом поле.Настройка maxLines
не будет работать, чтобы остановить пользователя.
Я удивлен, что Android не обеспечивает событие нажатия клавиши вниз / вверх, когда тип ввода InputType.TYPE_CLASS_TEXT
.Я получаю событие для всех других типов.Ниже приведен мой код.
EditText et = new EditText(this);
et.setMaxLines(3);
et.setSingleLine(false);
et.setInputType(InputType.TYPE_CLASS_TEXT);
et.setHint("First edit text");
et.setKeyListener(this); // This key listener is also not working.
et.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
Log.d("MainActivity.class", "event received"); // This event is never called.
return false;
}
});
@Override
public int getInputType() {
return InputType.TYPE_CLASS_NUMBER;
}
@Override
public boolean onKeyDown(View view, Editable text, int keyCode, KeyEvent event) { // THIS EVENT HITS ONLY WHEN INPUT TYPE IS OTHER THAN TEXT.
return false;
}
@Override
public boolean onKeyUp(View view, Editable text, int keyCode, KeyEvent event) {
return false;
}
@Override
public boolean onKeyOther(View view, Editable text, KeyEvent event) {
return false;
}
@Override
public void clearMetaKeyState(View view, Editable content, int states) {
}
даже onKeyDown()
активности также не работает.
Когда я устанавливаю InputType.TYPE_CLASS_NUMBER
или InputType.TYPE_CLASS_PHONE
, он работает нормально.
PS Я хочу получить ключ от ewvent для ввода типа текста.