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



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

654   15  

15 ответов:

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

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

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

попробуйте это -

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

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

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

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

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

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

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

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

Это будет делать трюк :)

попробуйте объявить его в файле menifest

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

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

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

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

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

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

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

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

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

просто добавьте это в свой манифест.xml-файл

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

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

чтобы расширить принятый ответ @Lucas:

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

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

Котлин Пример:

override fun onResume() {
  super.onResume()

  window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
}
//to hide the soft keyboard
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);

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

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

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

пример:

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

Comments

    Ничего не найдено.