Как удалить автофокус / всплывающее окно клавиатуры поля, когда появляется экран?
У меня есть экран, где первое поле является EditText, и он получает фокус при запуске, также всплывает тип числового ввода, что очень раздражает
Как я могу убедиться, что при запуске действия фокус не будет получен, и/или панель ввода не будет поднята?
8 ответов:
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);или
установите свойство activity в файле манифеста, как показано ниже в теге приложения
android:windowSoftInputMode="stateHidden"
перейдите в файл манифеста приложения и напишите эту строку для этого действия, которое вы хотите отключить всплывающее окно автоматической клавиатуры.
android:windowSoftInputMode="stateHidden"
чтобы программно не отображать клавиатуру, но виджет по умолчанию по-прежнему получает вызов фокуса:
getWindow().setSoftInputMode(WindowManager. LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);на
onResume()
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);вызовите описанный выше метод внутри onCreate (). он предотвращает softKeyboard чтобы показать, если пользователь не выбирает EditText by
tapping or clicking.или просто добавить
android:windowSoftInputMode="stateHidden"в деятельности тегManifest.xml
есть другой вид захватить фокус. По умолчанию первый фокусируемый вид будет фокусироваться при раздувании макета. Вы можете запросить фокус на другой вид через XML:
<TextView android:layout_width="wrap_parent" android:layout_height="wrap_content" android:text="Some other view"> <requestFocus /> </TextView>это работает для любого вида.
Если вы хотите сделать это программно, вы можете использовать
view.requestFocus().
Это, как правило, бардак. Первое, что я пытаюсь, это попытаться украсть фокус с помощью другого вида. Вы также должны иметь focusable и focusableInTouchMode.
<TextView ... android:focusable="true" android:focusableInTouchMode="true"> <requestFocus/> </TextView>
if(getWindow().getAttributes().softInputMode==WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED) { getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); }
не пробовал это, и я не рядом с моим компьютером программирования, но я бы заподозрил, что программно отправка фокуса на родительское представление или что - то в этом роде может сделать трюк-это скорее обходной путь, чем решение, но опять же не в состоянии проверить его просто мысль
Comments