Фокус для выбора компонентов пользовательского интерфейса, когда вы используете что-то, кроме сенсорного (например, D-Pad, клавиатура и т. Д.). Любой вид может получить фокус, хотя некоторые не могут быть сфокусированы по умолчанию. (Вы можете сделать вид фокусируемым с помощью setFocusable(true)
и принудительно сфокусировать его с помощью requestFocus()
.)
Однако важно отметить, что , когда вы находитесь в сенсорном режиме, фокусировка отключена . Так что, если вы используете свои пальцы, изменение фокуса программно ничего не делает. Исключением является представление, которое получает входные данные от редактора ввода. EditText
является таким примером. Для этой особой ситуации setFocusableInTouchMode(true)
используется, чтобы программная клавиатура знала, куда отправлять ввод. EditText
имеет эту настройку по умолчанию. Программная клавиатура автоматически выскакивает.
Если вы не хотите, чтобы программная клавиатура появлялась автоматически, вы можете временно отключить ее, как заметил @abeljus:
InputMethodManager inputManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
Когда пользователь нажимает на EditText
, он все равно должен показывать клавиатуру.
Дальнейшее чтение: