У меня есть edittext
, где я пытаюсь переопределить ввод физических клавиш по умолчанию, чтобы заменить его пользовательским вводом для каждой клавиши. Мой код отлично работает, чтобы добавить ввод, который я хочу, но я не могу подавить ввод по умолчанию, который отображается рядом с моим вводом. В настоящее время я сканирую текст, удаляю ненужный ввод, заменяю текст и перемещаю каретку, но это решение крайне непрактично.
Просто для контекста - я ориентируюсь на устройство с традиционной цифровой клавиатурой и не поддерживает стандартные процедуры ввода Android. Устройство поставляется с предустановленной латиницей и корейским вводом, и я пытаюсь создать решение T9 для других языков, не предустановленное. Этот метод, кажется, единственный способ сделать это на этом устройстве.
Как я могу подавить ввод по умолчанию?
Аналогично этому вопросу, но для Android.
Пропустив мое временное решение, вот код, который перехватывает ключевые события. Мне нужно подавить ввод по умолчанию в указанной позиции в коде:
public boolean onKeyUp(int KeyCode, KeyEvent event){
super.onKeyUp(KeyCode, event);
if (KeyCode>6 && KeyCode<19){
//todo: suppress default input here!
switch (KeyCode){
case 7: buttonHandler(R.id.Button0); break;
case 8: buttonHandler(R.id.Button1); break;
case 9: buttonHandler(R.id.Button2); break;
case 10: buttonHandler(R.id.Button3); break;
case 11: buttonHandler(R.id.Button4); break;
case 12: buttonHandler(R.id.Button5); break;
case 13: buttonHandler(R.id.Button6); break;
case 14: buttonHandler(R.id.Button7); break;
case 15: buttonHandler(R.id.Button8); break;
case 16: buttonHandler(R.id.Button9); break;
case 17: buttonHandler(R.id.ButtonStar); break;
case 18: buttonHandler(R.id.ButtonHash); break;
}
}
}