web-dev-qa-db-fra.com

Empêcher le clavier de s'afficher au début de l'activité

J'ai une activité avec une entrée Edit Text. Lorsque l'activité est initialisée, le clavier Android est affiché. Comment le clavier peut-il rester masqué jusqu'à ce que l'utilisateur focalise la saisie?

222
Fcoder

Je pense que ce qui suit peut fonctionner

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

Je l'ai déjà utilisé pour ce genre de chose.

378
Lucas

Essayez ceci aussi - 

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

Sinon, déclarez dans l'activité de votre fichier manifeste - 

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

Si vous avez déjà utilisé Android:windowSoftInputMode pour une valeur telle que adjustResize ou adjustPan, vous pouvez combiner deux valeurs telles que:

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

Cela permet de masquer le clavier à tout moment, mais de déplacer la vue d'activité au cas où le clavier devrait être affiché.

163
Praveenkumar

Cachez-le pour toutes les activités utilisant le thème

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

définir le thème

<application Android:theme="@style/MyTheme">
32
Dipesh Rathod

Ajoutez ces deux propriétés à votre mise en page parent (ex: mise en page linéaire, mise en page relative)

Android:focusable="false"
Android:focusableInTouchMode="false" 

Ça va faire l'affaire :)

21
King of Masses

Essayez de le déclarer dans le fichier manifeste

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

Si vous utilisez le niveau 21 de l'API, vous pouvez utiliser editText.setShowSoftInputOnFocus (false);

9
SaraVF

Il suffit d'ajouter dans AndroidManifest.xml

<activity Android:name=".HomeActivity"  Android:windowSoftInputMode="stateHidden">
</activity>
9
Dayanand Waghmare

Vous pouvez également écrire ces lignes de code dans la disposition parent du fichier de disposition .xml dans lequel vous avez le "problème": Voici le code:

Android:focusable="true"
Android:focusableInTouchMode="true"

Par exemple:

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

L'essentiel est de s'assurer que le EditText n'est pas directement focalisable. 
Au revoir! ;-)

6
Jack T

Meilleure solution pour moi, collez votre classe 

@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();
}
6
Efe ÖZYER

Fonction pour cacher le clavier.

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

Masquer le clavier dans le fichier AndroidManifext.xml.

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

Ajoutez simplement ceci dans votre fichier manifest.xml

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

Vous êtes tous fait.

3
Androido

Vous pouvez essayer cet attribut unique pour chaque élément 

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

Le clavier ne s'affichera pas tant que l'élément est actif

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

ajoutez simplement ceci sur votre activité:

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