2010-11-20 13 views

risposta

1

Si potrebbe provare a fare SetFocus() su un altro elemento nel proprio layout.

Se si sta parlando il tasto "invio/OK/ritorno" sulla tastiera stessa potrebbe essere necessario impostare una KeyListener sul controllo EditText al fine di sapere quando SetFocus() su un altro elemento.

+0

Capisco che questa è la soluzione data da molte persone, ma Non mi piace, perché invece di input.clearFocus() semplicemente funziona (es liberando l'attenzione da quell'input), ora devi mettere a fuoco qualcos'altro !? Sembra solo contro-intuitivo. – marienke

11

Nel file di layout XML, specificare un imeOption sul EditText:

android:imeOptions="actionGo" 

Quindi, aggiungere un listener di azione per il tuo EditText nel file di java del Activity

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

Dove mYourEditText è un EditText oggetto

+0

Hmm grazie. ma non è adatto a scrivere l'imeOpt nel layout o nell'editoriale? e ho qualche errore su EditorInfo, qualche idea? – carefacerz

+0

Puoi spiegare l'EditorInfo? – carefacerz

+0

Questa operazione eliminerà la tastiera ma non rimuoverà la messa a fuoco in tutti i casi. IE Android richiederà la messa a fuoco sulla prima vista disponibile che può essere messa a fuoco. – lostintranslation

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

Ciò nasconderà solo la tastiera. Non rimuoverà la messa a fuoco. – lostintranslation

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

Accertarsi che l'XML EditText ha:

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

Quindi impostare ascoltatore al vostro EditText (con Kotlin, e da un frammento):

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 
     }) 
Problemi correlati