Метод научного тыка выручает. Клавиатуру можно вызвать к элементам TextView и его дочерним таким способом
public void showSoftKeyboard(View view) {
if (view.requestFocus()) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(view, InputMethodManager.SHOW_FORCED);
}
}
При этом view.requestFocus сработает только если у элемента стоят флаги view.setFocusable(true); или view.setFocusableInTouchMode(true);, а InputMethodManager.SHOW_FORCED обеспечивает корректное переключение вида клавиатуры при изменении ориентации экрана.
Далее по порядку.
EditText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI); // в альбомном виде не показывается поле ввода и прочее
EditText.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); // не показываются подсказки
^ эти действия можно выполнить и из XML файла задав нужные атрибуты, но у меня элемент генерируется программно.
Обработка нажатия клавиш ExitText.addTextChangedListener и в самом TextWatcher процедура определения клавиши реализована на afterTextChanged(Editable s) (если вы меняете Editable в процессе работы afterTextChanged вызовется снова с измененными данными). TextWatcher ловит ТОЛЬКО текстовые кнопки, например, backspace он уже не обрабатывает, возможно нужно будет внедрять onKeyListener (еще не реализовывал).
Есть еще такая интересная штука как TextView.OnEditorActionListener, но по опытам он срабатывает только тогда когда вы нажали кнопку «Готово» в альбомной ориентации клавиатуры, и не срабатывает на хадварную кнопку «назад», которая закрывает клавиатуру — получается через него не определить скрытие/закрытие клавиатуры.