Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] Cacher le clavier

Sujet résolu
28 mai 2013 à 10:14:43

Bonjour,

Actuellement en train de développer une application Android, je souhaite cacher le clavier après le click de l'utilisateur, mais sans succès jusqu'à maintenant.

Voici le workflow complet :
J'ai au sein d'un layout 2 LinearLayout qui suivant les actions de l'utilisateur s'affichent sur par dessus l'autre avec un effet de fadeIn - fadeOut. Dans le linearLayout qui s'affiche par défaut, l'utilisateur n'a pas la possibilité de saisir du texte. Suite à un click sur un bouton, la transition se fait et apparaît alors à l'écran un autocompleteTextView ainsi qu'un bouton "Ok". Lorsque l'utilisateur appuie sur le bouton "Ok", la transition se refait en pour réafficher le linearLayout par défaut. Ce que je voudrais c'est qu'à l'appuie du bouton "Ok", le clavier disparaisse.

Malgré des recherches sur Internet, les codes testés ne semblent pas fonctionner dans mon cas de figure.

Voici un extrait du code qui en théorie cache le clavier mais qui ne fonctionne pas chez moi :

final Button chooseOk = (Button) view.findViewById(R.id.chooseOk);
chooseOk.setOnClickListener(new OnClickListener() {
  public void onClick(final View view) {
    final InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromInputMethod(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
  }
}

Si vous avez d'autres pistes je suis preneur !

Merci d'avance pour votre aide !
  • Partager sur Facebook
  • Partager sur Twitter
28 mai 2013 à 10:39:42

Salut,

Le bouton ok est de la meme vu que l'edit text ?

activity.getCurrentFocus().getWindowToken()



  • Partager sur Facebook
  • Partager sur Twitter
28 mai 2013 à 10:48:06

Bonjour,

J'ai remplacé le morceau de ton code par :

MonActivity.this.getCurrentFocus().getWindowToken()

Mais ça ne fonctionne pas non plus.

Edit : l'autocompleteTextView et le bouton "Ok" sont bien déclarés dans le même fichier layout.

-
Edité par rolandl 28 mai 2013 à 10:49:19

  • Partager sur Facebook
  • Partager sur Twitter
30 mai 2013 à 14:21:40

Bonjour,

Pour commencer, as-tu vérifié que ta méthode onClick est bien appelée ?

Si c'est le cas, essaye de remplacer 

imm.hideSoftInputFromInputMethod(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);

par

imm.hideSoftInputFromInputMethod(view.getWindowToken(), 0);
  • Partager sur Facebook
  • Partager sur Twitter
4 juin 2013 à 9:23:04

Bonjour,

J'ai bien essayé ce code, mais dans mon cas ça ne fonctionnait pas non plus. Mais j'ai finalement réussi à m'en sortir en "trichant" un peu :)

Les lignes de codes suivantes ouvrent le clavier s'il n'est pas affiché, et semble au contraire le fermer lorsqu'il est affiché :

final InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
  • Partager sur Facebook
  • Partager sur Twitter
23 juillet 2016 à 15:17:05

i use this code to hide the keyboard

 EditText ConsoText = (EditText)findViewById(R.id.ConsoEditText);
                ConsoText.setEnabled(false);
                ConsoText.setEnabled(true);



  • Partager sur Facebook
  • Partager sur Twitter
19 janvier 2020 à 23:09:49

Mettez le code suivant dans votre listener

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



  • Partager sur Facebook
  • Partager sur Twitter
20 janvier 2020 à 17:33:42

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL