Hacer que EditText pierda el foco al hacer clic en un botón

Tengo dos campos de EditText en mi actividad y un button hecho. Quiero que ambos campos EditText suelten el foco (que es el cursor no debe ser mostrado en cualquiera de ellos) cuando el usuario presiona el botón. Estoy usando el siguiente código:

 final Button saveButton = (Button) findViewById(R.id.saveButton); saveButton.setOnClickListener(saveButtonListener); private OnClickListener saveButtonListener = new OnClickListener() { @Override public void onClick(View v) { Text1.clearFocus(); Text2.clearFocus(); } } 

Sin embargo, cuando Text1 el botón done, el cursor aparece en Text1 incluso si todavía no he hecho clic en EditText . ¿Cómo puedo hacer que los campos de EditText se suelten el foco en el clic del botón

Intente cambiando su código como:

 private OnClickListener saveButtonListener = new OnClickListener() { @Override public void onClick(View v) { Text1.clearFocus(); Text2.clearFocus(); saveButton.requestFocus(); //or any other View } } 

Porque como doc como sobre public void clearFocus () :

Se llama cuando esta vista quiere renunciar al enfoque. Si el enfoque se borra onFocusChanged (boolean, int, android.graphics.Rect) se llama.

Nota: Cuando una vista borra el enfoque, el marco está intentando darle enfoque a la primera vista que se pueda enfocar desde la parte superior. Por lo tanto, si esta vista es la primera de la parte superior que puede tomar el foco, a continuación, todas las devoluciones de llamada relacionadas con la limpieza de enfoque se invocará después de que el marco se centrará en esta vista.

Significa que usted debe fijar el foco a la otra visión en el tecleo del botón porque Text1 actúa como primera vista en su disposición

Usted puede intentar este código apenas mueve el foco a otra visión.

 private OnClickListener saveButtonListener = new OnClickListener() { @Override public void onClick(View v) { saveButton.requestFocus(); //any other View } } 

La mejor manera que puedo encontrar es

 private void listenToButton(){ someButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { v.requestFocusFromTouch(); //Proceed with things } } } 

Esto funciona para mí:

 @Override public void onClick(View v) { //To hide soft keyboard InputMethodManager im = (InputMethodManager) getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE); im.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); v.requestFocusFromTouch(); } 

Sólo puede crear un elemento vacío EditText oculto en su diseño. Algo con 0 ancho y 0 altura. A continuación, en su clic puede llamar a hiddenEditText.requestFocus() ;

Establecer estas líneas para que el botón hará el truco.

 View.OnClickListener listener = new View.OnClickListener() { @Override public void onClick(View v) { v.setFocusable(true); v.setFocusableInTouchMode(true); v.requestFocus(); ...... } }; button.setOnClickListener(showUserListViewListener); 

Funciona para mi 🙂

Utilice el siguiente código en el botón de clic: –

 InputMethodManager imm = (InputMethodManager) view.getContext() .getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(view.getWindowToken(), 0); 
  • EditText leftView image se ajustan al tamaño del EditText Android
  • Android edittext - selecciona el número de teléfono del contacto (con autocompletado)
  • Problema de alineación de texto al utilizar fuente árabe
  • Cambiar el enfoque a EditarTexto Android
  • Rendimiento de EditText: Descripción del tiempo de procesamiento de la GPU en la renderización de GPU de perfil
  • Cómo establecer DatePickerDialog valor a EditText?
  • Edittext punto de partida problema Android
  • EditarTexto
  • Android EditText: seleccione todo el texto mientras toque y borre cuando el usuario comience a escribir.
  • Abrir EditTextPreference a través del código (programatically)
  • Cómo recuperar el ID xml de EditText
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.