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);
Use TextView.setImeOptions y páselo ActionDone. como textView.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");