2010-11-20 4 views

Répondre

1

Vous pouvez essayer de faire SetFocus() sur un autre élément de votre modèle.

Si vous parlez de la touche « entrée/ok/retour » sur le clavier lui-même, vous devrez peut-être mettre en place un KeyListener sur le contrôle EditText afin de savoir quand SetFocus() sur un autre élément.

+0

Je comprends que c'est la solution donnée par beaucoup de gens, mais Je ne l'aime pas, car au lieu de input.clearFocus() simplement de travail (c.-à-d. effacer l'attention de cette entrée), vous devez maintenant mettre l'accent sur autre chose!? Cela semble juste contre-intuitif. – marienke

11

Dans le fichier XML de mise en page, spécifiez un imeOption sur votre EditText:

android:imeOptions="actionGo" 

Ensuite, ajoutez un écouteur d'action à votre EditText dans le fichier java de l'activité

mYourEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
      if (actionId == EditorInfo.IME_ACTION_GO) { 
       // hide virtual keyboard 
       InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
       imm.hideSoftInputFromWindow(mYourEditText.getWindowToken(), 0); 
       return true; 
      } 
      return false; 
     } 
    }); 

Où mYourEditText est un EditText objet

+0

Hmm merci. mais suis-je capable d'écrire l'image dans la mise en page ou dans le texte? et j'ai eu une erreur sur EditorInfo, une idée? – carefacerz

+0

Pouvez-vous expliquer l'EditorInfo? – carefacerz

+0

Ceci supprimera le clavier mais ne supprimera pas la mise au point dans tous les cas. IE Android demandera de se concentrer sur la première vue disponible qui peut se concentrer. – lostintranslation

12
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0); 
+1

Cela ne fera que masquer le clavier. Cela ne supprimera pas la mise au point. – lostintranslation

2
private void hideDefaultKeyboard() { 
    activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); 
    //you have got lot of methods here 
} 
1

Assurez-vous que votre XML EditText a:

android:id="@+id/myEditText"  
android:imeOptions="actionDone" 

auditeur Réglez ensuite à votre EditText (avec Kotlin, et d'un fragment):

myEditText.setOnEditorActionListener({ v, actionId, event -> 
      if (actionId == EditorInfo.IME_ACTION_DONE) { 
       myEditText.clearFocus() 
       val imm = activity.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager 
       imm.hideSoftInputFromWindow(view!!.windowToken, 0)  
      } 
      false 
     }) 
Questions connexes