2010-11-20 4 views

Antwort

1

Sie könnten versuchen, SetFocus() auf ein anderes Element in Ihrem Layout zu tun.

Wenn Sie sprechen über die „Enter/ok/Return“ -Taste auf der Tastatur selbst können Sie eine KeyListener auf der EditText Kontrolle, um einzurichten müssen zu wissen, wann man SetFocus() auf ein anderes Element.

+0

Ich verstehe, dass dies die Lösung von vielen Menschen gegeben ist, aber Ich mag es nicht, weil anstelle von input.clearFocus() einfach funktioniert (d. H den Fokus von dieser Eingabe löschen), müssen Sie nun den Fokus auf etwas anderes setzen !? Es scheint nur kontraintuitiv zu sein. – marienke

11

In der Layout-XML-Datei, eine imeOption auf EditText angeben:

android:imeOptions="actionGo" 

nächsten eine Aktion Hörer auf Ihre EditText in den

Java-Datei Aktivitäten hinzufügen
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; 
     } 
    }); 

Wo mYourEditText ein EditText ist Objekt

+0

Hmm, vielen Dank. aber sollte ich das imeOpt im Layout oder im edittext schreiben? und ich habe Fehler auf EditorInfo, irgendeine Idee? – carefacerz

+0

Können Sie die EditorInfo erklären? – carefacerz

+0

Dadurch wird die Tastatur geschlossen, der Fokus wird jedoch nicht in allen Fällen entfernt. IE Android wird den Fokus auf die erste verfügbare Ansicht, die sich fokussieren kann, anfordern. – lostintranslation

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

Dies wird nur die Tastatur verbergen. Der Fokus wird nicht entfernt. – lostintranslation

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

Stellen Sie sicher, dass Ihre EditText XML hat:

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

Dann setzen Zuhörer auf Ihre EditText (mit Kotlin, und aus einem 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 
     }) 
Verwandte Themen