Я пытаюсь вызвать Программируемую клавиатуру, открытую в Действии и захватить все, что вводится, поскольку я хочу обработать вход сам, у меня нет EditText. В настоящее время я пробовал это, но это не работает. Я хотел бы Мягкий Keyboardto, открытый ниже mAnswerTextView (Примечание: это - TextView не EditText).
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
// only will trigger it if no physical keyboard is open
mgr.showSoftInput(mAnswerTextView, InputMethodManager.SHOW_IMPLICIT);
Вам, вероятно, понадобится какая-то редактируемая текстовая область, чтобы сфокусироваться. Однако вы, вероятно, можете иметь один невидимый или на прозрачном фоне без курсора. Возможно, вам придется поиграть с настройками фокусировки для обзора.
Используйте TextWatcher для проверки изменений этого EditText с помощью addTextChangedListener , или, если вам нужен перехватчик еще более низкого уровня, установите ключевой прослушиватель textview с его методом setOnKeyListener (). См. Документацию KeyListener .
Используйте этот вызов, чтобы принудительно открыть мягкую клавиатуру:
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE))
.showSoftInput(myEditText, InputMethodManager.SHOW_FORCED);
и этот, чтобы закрыть ее:
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE))
.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
обратите внимание, что это действительно не рекомендуется - открывать клавиатуру принудительно - это немного беспорядочно. Какой у вас вариант использования, который действительно требует от вас ввода пользовательского ввода без обычного поля редактирования и требует, чтобы пользовательский ввод вводился ключ за ключом, не возвращая его обратно?