studio programacion para libro edición desarrollo desarrollar aprende aplicaciones android keyboard

para - programacion android pdf 2017



¿Cómo hago un botón de Android EditView "Hecho" y oculto el teclado cuando hago clic? (13)

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?


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

<android.support.v7.widget.AppCompatEditText android:id="@+id/edittext" android:layout_width="match_parent" android:layout_height="wrap_content" android:imeOptions="actionDone"/>

1.2 Si usa Edittext

<EditText android:id="@+id/edittext" android:layout_width="match_parent" android:layout_height="wrap_content" android:imeOptions="actionDone"/>

JAVA

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


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 here .

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.


Incluye tanto imeOptions como singleLine :

<EditText android:id="@+id/edittext_done" android:layout_width="fill_parent" android:layout_height="wrap_content" android:imeOptions="actionDone" android:singleLine="true" />


Para el código:

editText.setImeOptions(EditorInfo.IME_ACTION_DONE);


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

<EditText android:id="@+id/edittext_done" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="Enter some text" android:imeOptions="actionDone" />


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


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.


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



Utilizar esta:

android:singleLine="true"


Utilizar:

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


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


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