Android Cacher SoftKeyboard


Exemple

Le masquage du tableau de touches est généralement une exigence de base lorsque vous travaillez avec EditText. Le panneau de touches par défaut ne peut être fermé qu'en appuyant sur le bouton et la plupart des développeurs utilisent InputMethodManager pour forcer Android à masquer le clavier virtuel appelant hideSoftInputFromWindow et en transmettant le jeton de la fenêtre contenant votre vue focalisée. Le code pour effectuer les opérations suivantes:

public void hideSoftKeyboard()    
{
        InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
        inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);    
}

Le code est direct, mais un autre problème majeur est que la fonction hide doit être appelée lorsqu'un événement se produit. Que faire lorsque vous avez besoin du tableau de touches lorsque vous appuyez ailleurs que sur votre EditText? Le code suivant donne une fonction ordonnée qui doit être appelée dans votre méthode onCreate () une seule fois.

public void setupUI(View view) 
{
        String s = "inside";
        //Set up touch listener for non-text box views to hide keyboard.
        if (!(view instanceof EditText)) {

            view.setOnTouchListener(new View.OnTouchListener() {

                public boolean onTouch(View v, MotionEvent event) {
                    hideSoftKeyboard();
                    return false;
                }

            });
        }

        //If a layout container, iterate over children and seed recursion.
        if (view instanceof ViewGroup) {

            for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {

                View innerView = ((ViewGroup) view).getChildAt(i);

                setupUI(innerView);
            }
        }    
}