Je montre actuellement le clavier logiciel en utilisant le code suivant
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.RESULT_HIDDEN);
Et ici, je n'ai pas lié le clavier logiciel avec Edittext à cause de cela, j'avais utilisé le code ci-dessus.
Maintenant, je veux fermer le SoftKeyboard, donc j'utilise actuellement le code ci-dessous, mais cela ne fonctionne pas.
imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.RESULT_HIDDEN);
Quelqu'un peut-il me suggérer quoi utiliser pour fermer le softKeyboard?
Basé sur la réponse ci-dessous, je tiens à vous préciser que je n'utilise pas EditText, j'utilise la mise en page sur laquelle je souhaite afficher Clavier et Masquer clavier. Je veux envoyer un événement de touche du clavier à la zone distante bcoz de celle pour laquelle je n’ai pas utilisé editText.
J'ai testé et cela fonctionne:
...
//to show soft keyboard
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
//to hide it, call the method again
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
En passant, le deuxième paramètre de votre code n’est pas correct, veuillez regarder ici .
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(EditTextName.getWindowToken(), 0);
Utilisez ce code de travail:
InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
Si vous le souhaitez, vous pouvez utiliser la classe entière et appeler la méthode KeyboardUtil.hideKeyBoard (context) où:
public class KeyboardUtil
{
public static void hideKeyboard(Activity activity)
{
try
{
InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
catch (Exception e)
{
// Ignore exceptions if any
Log.e("KeyBoardUtil", e.toString(), e);
}
}
}
View view = this.getCurrentFocus();
if (view != null) {
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
it's working for me i hope it's work for you..
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (inputMethodManager != null) {
inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
}
la réponse de user942821 pour cacher cela fonctionne:
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
Mais cela fonctionne aussi pour moi pour le cacher:
imm.toggleSoftInput(0, 0);
Vous voudrez peut-être aussi essayer:
imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0);
Lorsque vous utilisez "0" dans le premier paramètre, le clavier bascule parfois au mauvais endroit dans des circonstances étranges que je n'ai pas encore su comprendre comment dupliquer. Je teste toujours ce dernier exemple, mais je le mettrai à jour lorsque j'en saurai plus.
Voir la page de documentation toggleSoftInput pour plus d’informations.
Cela fonctionne bien
InputMethodManager keyboard = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
keyboard.hideSoftInputFromWindow(getWindow().getAttributes().token, 0);
Voici la solution qui vérifie si le clavier est visible
public static void hideKeyboard(Activity activity) {
if (isKeyboardVisible(activity)) {
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
}
}
public static boolean isKeyboardVisible(Activity activity) {
///This method is based on the one described at http://stackoverflow.com/questions/4745988/how-do-i-detect-if-software-keyboard-is-visible-on-Android-device
Rect r = new Rect();
View contentView = activity.findViewById(Android.R.id.content);
contentView.getWindowVisibleDisplayFrame(r);
int screenHeight = contentView.getRootView().getHeight();
int keypadHeight = screenHeight - r.bottom;
return
(keypadHeight > screenHeight * 0.15);
}
InputMethodManager im =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
im.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
Tu pourrais aussi essayer
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Pour cacher le clavier,
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mView.getWindowToken(), 0);
Ici, "mView" peut être n'importe quelle vue visible à l'écran
Ce code masque le clavier dans onItemClick
d'une AutoCompleteTextView
public void onItemClick(AdapterView<?> adapterViewIn, View viewIn, int indexSelected, long arg3) {
// whatever your code does
InputMethodManager imm = (InputMethodManager) getSystemService(viewIn.getContext().INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(viewIn.getApplicationWindowToken(), 0);
}