¿Cómo hago un botón de Android EditView “Hecho” y oculto el teclado cuando hago clic?

Cuando el usuario hace clic en EditView , Android abre el teclado para que el usuario pueda escribir en EditView .

El problema es que cuando el usuario termina de escribir, no hay forma de ocultar el teclado. El usuario tiene que presionar el botón Atrás para ocultar el teclado.

¿Hay alguna manera de mostrar un botón Done en el teclado que oculte el teclado?

Use TextView.setImeOptions y páselo ActionDone. como textView.setImeOptions(EditorInfo.IME_ACTION_DONE);

Primero necesita configurar el atributo android:imeOptions igual a actionDone para su objective EditText como se ve a continuación. Eso cambiará su botón ‘RETURN’ en el teclado virtual de EditText a un botón ‘DONE’.

  

Incluye tanto imeOptions como singleLine :

  
 android:imeActionLabel="Done" android:singleLine="true" 

En el archivo XML funciona bien. Pero esto también hará que editText continúe escribiendo en una sola línea que quizás no desee. Por lo tanto, si agrega lo siguiente a su código, se asegurará de que no termine escribiendo todo en una sola línea.

 mainText.setHorizontallyScrolling(false); mainText.setMaxLines("Maximum integer value that you want to provide"); 

Utilizar esta:

 android:singleLine="true" 

Usa estas dos líneas para tu EditText

 android:imeActionLabel="Done" android:singleLine="true" 

o puede lograrlo programáticamente por esta línea.

 editText.setImeOptions(EditorInfo.IME_ACTION_DONE); 

Si la propiedad no cambia para el widget, puede ser mejor usar como android:imeOptions="actionDone" en el archivo xml diseño.

Utilizar:

 android:imeActionLabel="Done" android:singleLine="true" 

Para el código:

 editText.setImeOptions(EditorInfo.IME_ACTION_DONE); 

ActionDone se usa cuando se hace clic en el siguiente botón del teclado que indica la hora del teclado. Utilícelo en Editar texto o en AppcompatEditar.

XML

1.1 Si usa AppCompatEdittext

   

1.2 Si usa Edittext

   

JAVA

 EditText edittext= (EditText) findViewById(R.id.edittext); edittext.setImeOptions(EditorInfo.IME_ACTION_DONE); 

Tengo que señalarlo ya que mucha gente puede luchar contra eso sin conocer el problema.

Si desea que el kb se oculte al hacer clic en Done , y establece android:imeOptions="actionDone" & android:maxLines="1" sin configurar su tipo de entrada inputType NO funcionará, ya que el tipo de entrada predeterminado para EditText no es "text" como mucha gente piensa

por lo tanto, establecer solo inputType le dará los resultados que desee independientemente de lo que lo configure como "text" , "number" , … etc.

Para obtener el botón hecho

editText.setImeOptions(EditorInfo.IME_ACTION_DONE);

y

android:inputType="text" en el xml

Para el manejo en hecho hecho clic desde el teclado

  editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event){ if(actionId == EditorInfo.IME_ACTION_DONE){ // Your action on done return true; } return false; } }); 

`

De hecho, puedes establecer texto personalizado en ese pequeño botón azul. En el archivo xml solo usa

 android:imeActionLabel="whatever" 

en tu EditText

O en el uso del archivo java

 etEditText.setImeActionLabel("whatever", EditorInfo.IME_ACTION_DONE); 

Selecciono arbitrariamente IME_ACTION_DONE como un ejemplo de lo que debería ir en el segundo parámetro para esta función. Una lista completa de estas acciones se puede encontrar aquí .

Se debe tener en cuenta que esto no hará que el texto aparezca en todos los teclados en todos los dispositivos. Algunos teclados no admiten texto en ese botón (por ejemplo, tecla rápida). Y algunos dispositivos tampoco lo admiten. Una buena regla es, si ve texto en el botón, esto lo cambiará a lo que quiera.