5 votes

Comment cacher le clavier lorsque l'on clique en dehors de l'editText ?

J'ai du sur mesure listview con editText et modifiez le edittext données sur les prélèvements edittext Avec l'aide du clavier de visualisation, tout fonctionne bien.

Mon problème est que lorsque je clique en dehors de edittext le clavier doit se cacher.

merci...

5voto

Android Developer Points 866

Pour ce faire, vous devez activer le paramètre onTouchListener sur la disposition parentale du fichier de disposition. Sur le TouchListener, vous devez coder pour masquer le clavier lorsque vous cliquez en dehors de l'EditText. Veuillez suivre la présentation XML et la classe Java pour résoudre ce problème, veuillez suivre l'URL suivante.

http://amitthaperandroidquery.blogspot.com/2011/10/remove-keyboard-after-click-outside.html

2voto

amiekuser Points 924

L'une d'entre elles consiste à associer un récepteur de changement de focus à l'EditText. Lorsque le widget perd le focus, vous pouvez masquer le Keyborad en :-

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

0voto

Darpan Points 709

Vous pouvez y parvenir en suivant les étapes suivantes :

  1. Rendez la vue parentale (vue du contenu de votre activité) cliquable et focalisable en ajoutant les attributs suivants

        android:clickable="true" 
        android:focusableInTouchMode="true" 
  2. Implémenter une méthode hideKeyboard()

        public void hideKeyboard(View view) {
            InputMethodManager inputMethodManager =(InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE);
            inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
        }
  3. Enfin, activez l'écouteur onFocusChangeListener de votre texte d'édition.

        edittext.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (!hasFocus) {
                    hideKeyboard(v);
                }
            }
        });

De Cette source

0voto

Ryan Points 1153

Une autre méthode similaire à la réponse acceptée consiste à sous-classer la vue Racine de la disposition et à surcharger OnInterceptTouchEvent, à masquer le clavier et à renvoyer false pour permettre au toucher de se propager comme d'habitude.

L'exemple ci-dessous est pour Xamarin mais il est facile de le porter à Java :

public class KeyboardHidingScrollView : ScrollView
{
    public KeyboardHidingScrollView (Context context) : base (context)
    {
    }

    public KeyboardHidingScrollView (Context context, IAttributeSet attrs) : base (context, attrs)
    {
    }

    public override bool OnInterceptTouchEvent (Android.Views.MotionEvent ev)
    {
        var methodManager = (InputMethodManager)Context.GetSystemService (Context.InputMethodService);
        methodManager.HideSoftInputFromWindow (WindowToken, HideSoftInputFlags.None);
        return false;
    } 
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X