У меня относительно простой вопрос. У меня есть активность, в которой много EditText. Когда я открываю действие, оно автоматически фокусируется на первом EditText и отображает виртуальную клавиатуру.
Как я могу предотвратить это?
У меня относительно простой вопрос. У меня есть активность, в которой много EditText. Когда я открываю действие, оно автоматически фокусируется на первом EditText и отображает виртуальную клавиатуру.
Как я могу предотвратить это?
Ответы:
Используйте эти атрибуты в теге макета в файле XML:
Как сообщили другие участники в комментариях, он не работает,
ScrollView
поэтому вам необходимо добавить эти атрибуты к основному дочернему элементуScrollView
.источник
Вы можете добавить это в свою деятельность Android Manifest:
источник
android:windowSoftInputMode="stateHidden|adjustPan"
У меня есть несколько реализаций описаны здесь, но теперь я уже добавлен в
AndroidManifest.xml
моейActivity
собственности:Я думаю, что это простой способ, даже если вы используете
fragments
.источник
Если у вас есть другое представление о вашей деятельности, например
ListView
, вы также можете:в вашем onResume (), чтобы захватить фокус с
editText
.Я знаю, что на этот вопрос был дан ответ, но я просто предлагаю альтернативное решение, которое сработало для меня :)
источник
https://stackoverflow.com/a/11627976/5217837 Это почти правильно:
Но это должно быть SOFT_INPUT_STATE_HIDDEN, а не SOFT_INPUT_STATE_ALWAYS_VISIBLE
источник
Используйте это в коде своей деятельности:
источник
У меня была похожая проблема, даже при переключении вкладок клавиатура выскакивала автоматически и оставалась открытой с Android 3.2.1 на планшете. Используйте следующий метод:
В onCreate () и onPause () действия для каждого EditText:
setEditTextFocus (myEditText, ложь);
Для каждого EditText OnTouchListener:
Для каждого
EditText
вOnEditorActionListener
:И для каждого
EditText
вlayout xml
:Вероятно, возможна дополнительная оптимизация кода.
источник
источник
Я нашел это простое решение, которое сработало для меня. Установите эти атрибуты в родительском макете:
И теперь, когда действие начинается, этот основной макет по умолчанию получает фокус.
Кроме того, мы можем удалить фокус с дочерних представлений во время выполнения, снова передав фокус главному макету, например:
Надеюсь, это сработает для вас.
источник
это решение, которое я использую, это не лучшее решение, но оно хорошо работает для меня
источник
Интересно, что в этой документации https://developer.android.com/training/keyboard-input/visibility.html указано, что при запуске действия и фокусе на текстовом поле мягкая клавиатура не отображается (а затем переходит к покажу вам, как показать клавиатуру, если вы хотите, с некоторым кодом).
На моем Samsung Galaxy S5 именно так работает мое приложение (без записи в манифесте или определенного кода) - без программной клавиатуры. Однако на Lollipop AVD отображается мягкая клавиатура, что противоречит приведенному выше документу.
Если вы наблюдаете такое поведение при тестировании в AVD, возможно, вы захотите протестировать на реальном устройстве, чтобы увидеть, что произойдет.
источник
На это есть несколько хороших ответов в следующем посте: Остановить EditText от получения фокуса при запуске Activity . Я регулярно использую следующий код от Моргана :
ПРИМЕЧАНИЕ: фиктивный элемент должен быть РАЗМЕЩЕН СПРАВА ПЕРЕД фокусируемым элементом.
И я думаю, что он должен отлично работать даже с ScrollView, и для этого не было проблем с доступностью.
источник
Это происходит, когда ваш EditText автоматически получает Focus, когда начинается ваша деятельность. Итак, один простой и стабильный способ исправить это - просто установить начальный фокус на любое другое представление, например кнопку и т. Д.
Вы можете сделать это в XML макета, код не требуется.
источник
Принятый ответ у меня не работает, поэтому дайте ответное решение, может быть полезно!
Теперь клавиатура открыта, наслаждайтесь :)
источник
Работает нормально
источник
Добавьте приведенный ниже код в верхнюю часть XML-файла активности и убедитесь, что представление находится над EditText.
источник
android:focusableInTouchMode="true"
Добавьте указанную выше строку в xml
EditText
или,TextInputLayout
которая имеет фокус и вызываетsoftInputKeyboard
всплывающее окно.Это решило проблему для нас, и теперь клавиатура не всплывает.
источник
search_edit_text = (EditText) findViewById (R.id.search_edit_text);
Это работает для меня, ребята, фрагмент может иметь другой синтаксис. ЭТО РАБОТАЕТ НА ДЕЯТЕЛЬНОСТЬ
источник
Если в вашем представлении есть EditText и Listview, то клавиатура откроется по умолчанию. Чтобы скрыть клавиатуру от всплывающего окна по умолчанию, выполните следующие действия.
Убедитесь, что вы запрашиваете фокус на представлении списка после получения представления для editText.
Например,
Если вы это сделаете, то editText получит фокус и появится клавиатура.
источник