Фокус предназначен для выбора компонентов пользовательского интерфейса, когда вы используете что-то помимо сенсорного (например, 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
, клавиатура все равно должна отображаться.
Дальнейшее чтение: