2010-11-20 7 views

Odpowiedz

1

Możesz spróbować wykonać SetFocus() na innym elemencie układu.

Jeśli mówimy o przycisk „ENTER/OK/Return” na samej klawiaturze może trzeba założyć KeyListener sprawie kontroli EditText, aby wiedzieć, kiedy SetFocus() na innym elemencie.

+0

Rozumiem, że jest to rozwiązanie podane przez wielu ludzi, ale Nie podoba mi się to, ponieważ zamiast input.clearFocus() po prostu działa (np usuwając fokus z tego wejścia), musisz ustawić ostrość na coś innego !? Wydaje się to być sprzeczne z intuicją. – marienke

11

W pliku XML szablonu, określ imeOption na swoim EditText:

android:imeOptions="actionGo" 

Następnie dodaj detektor akcji do EditText w działalności w pliku java

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; 
     } 
    }); 

Gdzie mYourEditText stanowi EditText object

+0

Hmm dziękuję. ale jestem w stanie napisać imeOpt w układzie lub editekście? i mam błąd na EditorInfo, jakiś pomysł? – carefacerz

+0

Czy możesz wyjaśnić EditorInfo? – carefacerz

+0

Spowoduje to zamknięcie klawiatury, ale nie spowoduje usunięcia fokusa we wszystkich przypadkach. IE Android poprosi o skupienie się na pierwszym dostępnym widoku, który może się skupić. – lostintranslation

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

To tylko ukryje klawiaturę. Nie spowoduje to usunięcia ostrości. – lostintranslation

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

Upewnij się EditText XML posiada:

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

Następnie ustaw słuchacz do EditText (z Kotlin oraz z fragmentu):

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 
     }) 
Powiązane problemy