Как удалить автофокус / всплывающее окно клавиатуры поля, когда появляется экран?



У меня есть экран, где первое поле является EditText, и он получает фокус при запуске, также всплывает тип числового ввода, что очень раздражает



Как я могу убедиться, что при запуске действия фокус не будет получен, и/или панель ввода не будет поднята?

595   8  

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

    Ничего не найдено.