web-dev-qa-db-fra.com

Comment masquer le clavier logiciel au début de l'activité

J'ai un Edittext avec Android:windowSoftInputMode="stateVisible" dans Manifest. Maintenant, le clavier sera affiché lorsque je commence l'activité. Comment le cacher? Je ne peux pas utiliser Android:windowSoftInputMode="stateHidden parce que, lorsque le clavier est visible, minimisez l'application et relancez-le, le clavier doit être visible. J'ai essayé avec

InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);

mais cela n'a pas fonctionné.

142
Aju

Utilisez les fonctions suivantes pour afficher/masquer le clavier:

/**
 * Hides the soft keyboard
 */
public void hideSoftKeyboard() {
    if(getCurrentFocus()!=null) {
        InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
        inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
    }
}

/**
 * Shows the soft keyboard
 */
public void showSoftKeyboard(View view) {
    InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
    view.requestFocus();
    inputMethodManager.showSoftInput(view, 0);
}
200
Sherif elKhatib

Dans le AndroidManifest.xml:

<activity Android:name="com.your.package.ActivityName"
          Android:windowSoftInputMode="stateHidden"  />

ou essayer

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

S'il vous plaît vérifier this aussi

344
Neenu

Ajoutez simplement deux attributs à la vue parent de editText.

Android:focusable="true"
Android:focusableInTouchMode="true"
40
mani

Mettez ceci dans le manifeste à l'intérieur de la balise Activity

  Android:windowSoftInputMode="stateHidden"  
35
Saneesh

Essaye ça:

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

Regardez this un pour plus de détails.

25
Adnan

Pour masquer le clavier logiciel au moment du démarrage de la nouvelle activité ou onCreate(), onStart() etc., vous pouvez utiliser le code ci-dessous:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
14
Rana Pratap Singh

Utilisation de AndroidManifest.xml

<activity Android:name=".YourActivityName"
      Android:windowSoftInputMode="stateHidden"  
 />

Utilisation de Java

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

utiliser la solution ci-dessus pour masquer le clavier mais empêcher la prise de focus par edittext lors de la création de l'activité, mais saisissez-la lorsque vous les touchez à l'aide de:

ajouter dans votre EditText

<EditText
Android:focusable="false" />

ajouter également un auditeur de votre EditText

youredittext.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
    v.setFocusable(true);
    v.setFocusableInTouchMode(true);
    return false;
}});
9
Atif Amin

Ajoutez le texte suivant à votre fichier XML.

<!--Dummy layout that gain focus -->
            <LinearLayout
                Android:layout_width="0dp"
                Android:layout_height="0dp"
                Android:focusable="true"
                Android:focusableInTouchMode="true"
                Android:orientation="vertical" >
            </LinearLayout>
7
Hits

J'espère que cela fonctionnera, j'ai essayé beaucoup de méthodes mais celle-ci a fonctionné pour moi dans fragments. il suffit de mettre cette ligne dans onCreateview/init.

getActivity().getWindow().setSoftInputMode(
    WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
6
Mubashar

Pour masquer le clavier logiciel au moment du démarrage de la nouvelle activité ou de la méthode onCreate (), onStart (), utilisez le code ci-dessous:

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

Pour masquer le clavier logiciel au moment du bouton est en activité:

View view = this.getCurrentFocus();

    if (view != null) {
        InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
        assert imm != null;
        imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
    }
5
Adam

Utilisez le code suivant pour masquer le clavier logiciel pour la première fois au démarrage de l'activité.

getActivity().getWindow().setSoftInputMode(WindowManager.
LayoutParams.SOFT_INPUT_STATE_HIDDEN);
4
Geeta Gupta

Mettez ce code dans votre fichier Java et passez l'argument de object sur edittext,

private void setHideSoftKeyboard(EditText editText){
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
}
4

Vous pouvez configurer config sur AndroidManifest.xml

Exemple:

<activity
    Android:name="Activity"
    Android:configChanges="orientation|keyboardHidden"
    Android:theme="@*Android:style/Theme.NoTitleBar"
    Android:launchMode="singleTop"
    Android:windowSoftInputMode="stateHidden"/>
4
Long Nguyen

Essayez celui-ci aussi

Ed_Cat_Search = (EditText) findViewById(R.id.editText_Searc_Categories);

Ed_Cat_Search.setInputType(InputType.TYPE_NULL);

Ed_Cat_Search.setOnTouchListener(new View.OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
        Ed_Cat_Search.setInputType(InputType.TYPE_CLASS_TEXT);
        Ed_Cat_Search.onTouchEvent(event); // call native handler
        return true; // consume touch even
    }
});
3
ritesh4326

Essaye ça.

Tout d’abord dans votre xml interrogeable, les champs (nom et indice, etc.) mettent @string et non des chaînes littérales.

Ensuite, la méthode onCreateOptionsMenu doit comporter un objet ComponentName avec votre nom de package et votre nom de classe terminé (avec nom de package) - Dans le cas où l’activité ayant le composant SearchView est identique à la afficher les résultats de la recherche, utilisez getComponentName(), comme l'indique le développeur de Google Android.

J'ai essayé beaucoup de solutions et après beaucoup de travail, cette solution fonctionne pour moi.

2
toktokwho

Utilisez SOFT_INPUT_STATE_ALWAYS_HIDDEN au lieu de SOFT_INPUT_STATE_HIDDEN

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
2
Brinda Rathod

C'est ce que j'ai fait:

yourEditText.setCursorVisible(false); //This code is used when you do not want the cursor to be visible at startup
        yourEditText.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                v.onTouchEvent(event);   // handle the event first
                InputMethodManager imm = (InputMethodManager)v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
                if (imm != null) {

                    imm.hideSoftInputFromWindow(v.getWindowToken(), 0);  // hide the soft keyboard
                    yourEditText.setCursorVisible(true); //This is to display cursor when upon onTouch of Edittext
                }
                return true;
            }
        });
2
mangu23
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

ça va marcher

2
user8356857

Si votre application cible API Android de niveau 21 ou plus, une méthode par défaut est disponible.

editTextObj.setShowSoftInputOnFocus(false);

Assurez-vous que vous avez défini le code ci-dessous dans la balise XML EditText.

<EditText  
    ....
    Android:enabled="true"
    Android:focusable="true" />
2
Harpreet

ajoutez dans votre activité dans les manifestes cette propriété

Android:windowSoftInputMode="stateHidden" 
1
yousef
Ed_Cat_Search = (EditText) findViewById(R.id.editText_Searc_Categories);

Ed_Cat_Search.setInputType(InputType.TYPE_NULL);

Ed_Cat_Search.setOnTouchListener(new View.OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
        Ed_Cat_Search.setInputType(InputType.TYPE_CLASS_TEXT);
        Ed_Cat_Search.onTouchEvent(event); // call native handler
        return true; // consume touch even
    }
});

this one worked for me
0
user3024334