Запретить отображение клавиатуры при запуске активности - PullRequest
241 голосов
/ 16 марта 2012

У меня есть активность с Edit Text входом. Когда действие инициализировано, отображается клавиатура Android. Как клавиатура может оставаться скрытой, пока пользователь не сфокусирует ввод?

Ответы [ 15 ]

409 голосов
/ 16 марта 2012

Я думаю, что следующее может работать

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

Я использовал это для такого рода вещей раньше.

173 голосов
/ 16 марта 2012

Попробуйте также -

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

В противном случае объявите в файле манифеста активность -

<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Main"
          android:label="@string/app_name"
          android:windowSoftInputMode="stateHidden"
          >

Если вы уже использовали android:windowSoftInputMode для значения, такого как adjustResizeили adjustPan, вы можете объединить два значения, например:

<activity
        ...
        android:windowSoftInputMode="stateHidden|adjustPan"
        ...
        >

Это будет скрывать клавиатуру при необходимости, но панорамировать вид деятельности в случае, если клавиатура должна отображаться.

32 голосов
/ 16 марта 2012

Скрыть это для всех действий, используя тему

<style name="MyTheme" parent="Theme">
    <item name="android:windowSoftInputMode">stateHidden</item>
</style>

установить тему

<application android:theme="@style/MyTheme">
22 голосов
/ 24 декабря 2015

Добавьте эти два свойства в родительский макет (например: линейный макет, относительный макет)

android:focusable="false"
android:focusableInTouchMode="false" 

Это сделает свое дело:)

13 голосов
/ 04 апреля 2014

Попробуйте объявить это в файле с указанием

<activity android:name=".HomeActivity"
      android:label="@string/app_name"
      android:windowSoftInputMode="stateAlwaysHidden"
      >
9 голосов
/ 06 января 2016

Просто добавьте в AndroidManifest.xml

<activity android:name=".HomeActivity"  android:windowSoftInputMode="stateHidden">
</activity>
9 голосов
/ 20 марта 2015

Если вы используете API уровня 21, вы можете использовать editText.setShowSoftInputOnFocus (false);

6 голосов
/ 17 апреля 2018

Вы также можете написать эти строки кода в родительском макете XML-файла макета, в котором у вас есть «проблема»: Вот код:

android:focusable="true"
android:focusableInTouchMode="true"

Например:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    ...
    android:focusable="true"
    android:focusableInTouchMode="true" >

    <EditText
        android:id="@+id/myEditText"
        ...
        android:hint="@string/write_here" />

    <Button
        android:id="@+id/button_ok"
        ...
        android:text="@string/ok" />
</LinearLayout>

Ключ должен убедиться, что EditText не может быть непосредственно фокусируемым.
До свидания! ; -)

6 голосов
/ 05 августа 2016

Лучшее решение для меня, вставь свой класс

@Override
public void onResume() {
    this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
    super.onResume();
}

@Override
public void onStart() {
    this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
    super.onStart();
}
4 голосов
/ 09 августа 2018

Просто добавьте это в свой файл manifest.xml

<activity android:name=".MainActivity"
            android:windowSoftInputMode="stateHidden">

Все готово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...