26
Mai
Masquer automatiquement le clavier lorsque le champs perd le focus
dans Android
Commentaires
Un champs texte sous Android ouvre un clavier virtuel quand il obtient le focus mais ne le masque pas automatiquement quand il le perd, ce qui peut sembler assez dérangeant quand on clique ailleurs et que le clavier reste au milieu.
Ce petit bout de code est à insérer dans votre activité, il surcharge juste la méthode dispatchTouchEvent() pour automatiquement masquer le clavier virtuel d’un champs EditText qui perd le focus.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
@Override public boolean dispatchTouchEvent(MotionEvent event) { if( event.getAction() == MotionEvent.ACTION_DOWN ) { View v = getCurrentFocus(); if( v instanceof EditText ) { Rect outRect = new Rect(); v.getGlobalVisibleRect(outRect); if( !outRect.contains((int) event.getRawX(), (int) event.getRawY()) ) { v.requestFocus(); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(v.getWindowToken(), 0); getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); v.clearFocus();// Have to be after all or a bug will occur } } } return super.dispatchTouchEvent(event); } |