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
- Multiple EditText - especifica la ubicación del cursor
- Problema de enfoque en la visualización de ListView EditText en el cuadro de diálogo en Android
- Cómo cambiar el estilo de un predeterminado EditText
- Necesita hacer doble clic en EditText para que el oyente de clics responda
- Cómo hacer que la altura de la caja EditText se expanda
- La placa de teclado mueve toda la disposición hacia arriba
- Cómo mostrar el teclado virtual cuando edittext está enfocado
- El niño especificado ya tiene un padre. Debe llamar a removeView () en el primer padre del niño (Android)
- Resaltar todas las palabras que se buscan a través de EditText
- Sugerencia EditText que no se muestra en 5.0.1
- EditText no restaura el estado en DialogFragment
- EditText imprimir $ cuando se pulsa 4
- Establecer estilo de texto de sugerencia Editarxts como cursiva
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);
- Cómo dibujar Bitmap rápido en el método onDraw () en el lienzo android
- Barra de búsqueda circular de Android