Как убрать автофокус / всплывающее окно с полем при появлении экрана? - PullRequest
96 голосов
/ 23 мая 2010

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

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

Ответы [ 8 ]

146 голосов
/ 23 мая 2011
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);

или

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

android:windowSoftInputMode="stateHidden"
141 голосов
/ 15 декабря 2010

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

android:windowSoftInputMode="stateHidden"
18 голосов
/ 24 апреля 2012

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

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

в onResume()

10 голосов
/ 19 августа 2015
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

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

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

5 голосов
/ 06 апреля 2016

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

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

    <requestFocus/>
</TextView>
4 голосов
/ 11 декабря 2014

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

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

    <requestFocus />
</TextView>

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

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

0 голосов
/ 24 мая 2012
if(getWindow().getAttributes().softInputMode==WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED)
{
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}
0 голосов
/ 26 мая 2010

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

...