Запретить отображение клавиатуры при запуске активности

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

Ответ 1

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

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

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

Ответ 2

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

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"
        ...
        >

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

Ответ 3

Скрыть его для всех действий с помощью темы

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

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

<application android:theme="@style/MyTheme">

Ответ 4

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

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

Он выполнит трюк:)

Ответ 5

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

<activity android:name=".HomeActivity"
      android:label="@string/app_name"
      android:windowSoftInputMode="stateAlwaysHidden"
      >

Ответ 6

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

Ответ 7

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

<activity android:name=".HomeActivity"  android:windowSoftInputMode="stateHidden">
</activity>

Ответ 8

Вы также можете написать эти строки кода в родительском макете 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 не может быть непосредственно сфокусирован.
До свидания! ;-)

Ответ 9

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

@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();
}

Ответ 10

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

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

Вы все сделали.

Ответ 11

Функция скрытия клавиатуры.

public static void hideKeyboard(Activity activity) {
    View view = activity.getCurrentFocus();

    if (view != null) {
        InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);

        inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
    }
}

Скрыть клавиатуру в файле AndroidManifext.xml.

<activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    android:windowSoftInputMode="stateHidden">

Ответ 12

Подробнее о принятом ответе @Lucas:

Назовите это из своей активности в одном из событий раннего жизненного цикла:

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

Пример Kotlin:

override fun onResume() {
  super.onResume()

  window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
}

Ответ 13

Вы можете попробовать этот набор уникальных атрибутов для каждого элемента

TextView mtextView = findViewById(R.id.myTextView);
mtextView.setShowSoftInputOnFocus(false);

Клавиатура не будет отображаться, пока элемент находится в фокусе

Ответ 14

//to hide the soft keyboard
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);

Ответ 15

просто добавьте это в свою активность:

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
      if (getCurrentFocus() != null) {
           InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
           imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
      }
      return super.dispatchTouchEvent(ev);
}

Ответ 16

Это происходит, когда EditText - это первое представление для получения Фокуса, когда начинается ваша активность. Таким образом, вы можете надежно решить эту проблему без кода, просто установив исходный фокус на другой вид. Вы можете сделать это в XML, не требуется код.

Пример:

<Button
  android:id="@+id/mybutton">
  <requestFocus />
</Button>