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

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

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


person Pentium10    schedule 23.05.2010    source источник


Ответы (9)


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

or

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

android:windowSoftInputMode="stateHidden"
person Mitul Nakum    schedule 23.05.2011
comment
Настройка android:windowSoftInputMode в файле AndroidManifest.xml может быть связана с другими значениями. Режим обычно подразумевает одиночные значения, но в этом случае значение представляет собой набор флагов. Описание значений: Formats: flag Values: adjustNothing, adjustPan, adjustResize, adjustUnspecified, stateAlwaysHidden, stateAlwaysVisible, stateHidden, stateUnchanged, stateUnspecified, stateVisible Specify the default soft-input mode for the main window of this activity. A value besides "unspecified" here overrides any value in the theme. - person Jeff Muir; 29.08.2017

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

android:windowSoftInputMode="stateHidden"
person sm.euro    schedule 15.12.2010
comment
Не работает для меня. Я поместил его в activity_main.xml. Это сработало отлично, когда я поместил его в onCreate(). getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); - person glez; 25.02.2018

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

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

in onResume()

person danmux    schedule 24.04.2012

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

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

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

person Xar-e-ahmer Khan    schedule 19.08.2015

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

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

    <requestFocus/>
</TextView>
person urSus    schedule 06.04.2016
comment
Это работает. Я чувствую, что это более чистый подход, но это также зависит от ваших условий. Я принимаю этот. - person JaydeepW; 15.12.2018

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

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

    <requestFocus />
</TextView>

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

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

person Jason Robinson    schedule 10.12.2014

Добавление android:windowSoftInputMode="stateHidden" к вашей активности в манифесте скрывает клавиатуру только при запуске активности или, как говорит Google

Когда пользователь утвердительно переходит к действию, а не возвращается к нему из-за выхода из другого действия.

Чтобы скрыть клавиатуру также, когда пользователь нажимает кнопку «Назад» и возвращается к вашей активности из какой-либо другой активности, используйте android:windowSoftInputMode="stateAlwaysHidden"

person Devansh Maurya    schedule 22.07.2020

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

person Ben    schedule 26.05.2010
comment
Я пробовал это, но не работает. Я вызвал .requestFocus(); на кнопку, но всплывающая клавиатура все равно всплывает. - person Pentium10; 28.05.2010
comment
мысли могут быть добавлены в виде комментариев - person Alberto M; 05.06.2018

person    schedule
comment
Добро пожаловать в StackOverflow! Это не похоже на другие форумы, если вы хотите изменить свой ответ, просто нажмите на ссылку edit и внесите изменения. И, пожалуйста, попробуйте отформатировать свой код, выбрав код и нажав кнопку "Образец кода" {} или нажав Ctrl+K. - person Peter Lang; 24.05.2012