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

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

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

Ответ 1

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);

или

установить свойство активности в файле манифеста, как показано ниже

android:windowSoftInputMode="stateHidden"

Ответ 2

перейдите в файл манифеста приложения и напишите эту строку для этого действия, которое вы хотите отключить всплывающее окно автоматической клавиатуры.

android:windowSoftInputMode="stateHidden"

Ответ 3

Чтобы программно не отображалась клавиатура, но виджет по умолчанию все еще получает вызов фокуса:

getWindow().setSoftInputMode(WindowManager.
                             LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

in onResume()

Ответ 4

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

вызовите вышеуказанный метод внутри onCreate(). Это предотвратит отображение softKeyboard, если пользователь не выбирает EditText на tapping or clicking.

или просто добавьте android:windowSoftInputMode="stateHidden" в тег активности в Manifest.xml

Ответ 5

У вас есть другой взгляд. По умолчанию первый фокусный вид будет получать фокус при раздутии макета. Вы можете запросить фокус на другом представлении через XML:

<TextView
    android:layout_width="wrap_parent"
    android:layout_height="wrap_content"
    android:text="Some other view">

    <requestFocus />
</TextView>

Это работает для любого вида.

Если вы хотите сделать это программно, вы можете использовать view.requestFocus().

Ответ 6

Это обычно беспорядок. Первое, что я пытаюсь сделать, это попытаться украсть фокус с другим видом. Вы также должны иметь настраиваемый и focusableInTouchMode.

<TextView
  ...
  android:focusable="true"
  android:focusableInTouchMode="true">

    <requestFocus/>
</TextView>

Ответ 7

не пробовал это и не приближаюсь к моему компьютеру программирования, но я бы заподозрил программную отправку фокуса в родительский вид, или что-то в этом роде могло бы сделать трюк - это скорее обходное решение, чем решение, но опять же не способное испытайте это просто мысль

Ответ 8

if(getWindow().getAttributes().softInputMode==WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED)
{
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}