2010-11-20 41 views

Respuesta

1

Puede intentar hacer SetFocus() en otro elemento de su diseño.

Si usted está hablando el botón "ENTER/OK/retorno" en el teclado en sí puede que tenga que configurar una KeyListener en el control EditText con el fin de saber cuándo SetFocus() en otro elemento.

+0

entiendo que esta es la solución dada por muchas personas, pero No me gusta, porque en lugar de input.clearFocus() simplemente funciona (es decir, despejando el foco de esa entrada), ¿ahora tienes que establecer el foco en otra cosa? Parece contra-intuitivo. – marienke

11

En el archivo del formato XML, especifique un imeOption en su EditarTexto:

android:imeOptions="actionGo" 

A continuación, añadir un detector de acción a su EditarTexto en el archivo java de la Actividad

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

Dónde mYourEditText es un EditarTexto objetar

+0

Hmm gracias. pero ¿se supone que debo escribir el imeOpt en el diseño o en el texto de edición? y obtuve un error en EditorInfo, ¿alguna idea? – carefacerz

+0

¿Puedes explicar el EditorInfo? – carefacerz

+0

Esto desactivará el teclado pero no eliminará el foco en todos los casos. IE android solicitará enfoque en la primera vista disponible que puede enfocar. – lostintranslation

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

Esto solo ocultará el teclado. No eliminará el foco. – lostintranslation

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

asegurarse de que su XML EditarTexto tiene:

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

A continuación, establezca oyente a su EditarTexto (con Kotlin, ya partir de un fragmento):

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 
     }) 
Cuestiones relacionadas