android - textedit - Cómo implementar el texto de edición múltiple de Multiline con el botón Acción(sin botón Enter)
propiedades de password en android studio (3)
Continuando la respuesta de Ruslan . El truco funcionó, pero hay una cosa más que debes tener en cuenta en XML.
EditText
debería tener text
tipo de entrada; de lo contrario, actionDone
no funcionará. El tipo de entrada predeterminado de EditText
no permite que el usuario ingrese saltos de línea, por lo que inputType debe establecerse en text
es decir,
android:inputType="text"
//And of course
android:imeOptions="actionDone"
Y en tu clase Java necesitas agregar:
editText.setHorizontallyScrolling(false);
Tengo EditText que se usa para ingresar contenidos en mensajes (correos electrónicos, sms). Deseo que el mensaje se publique inmediatamente en el botón AcciónDone, haga clic. Utilizo el siguiente código para esto:
message.setOnEditorActionListener((textView, i, keyEvent) -> {
switch (i) {
case EditorInfo.IME_ACTION_DONE:
if (messageCanBePosted()) {
SoftKeyboard.hide(message);
postMessage();
return true;
} else {
return false;
}
default:
return false;
}
});
Pero también quiero que este campo de mensaje sea multilínea, como en cualquier otra aplicación de mensajería. Puedo lograrlo con esta línea:
android:inputType="textMultiLine"
El problema es que después de agregar esta línea, el botón ActionDone comienza a actuar como el botón Enter. Así que mi devolución de llamada para capturar EditorInfo.IME_ACTION_DONE
nunca se llama. De modo que cada vez que el usuario presione ese botón, el cursor se moverá a una nueva línea en lugar de publicar un mensaje.
¿Cómo puedo mantener el comportamiento multilínea de EditText (capacidad de mostrar texto en múltiples líneas) y el botón ActionDone?
Finalmente, después de buscar aquí hilos similares, he encontrado una solución. Solo necesita agregar estas líneas en su Actividad / Fragmento:
editText.setHorizontallyScrolling(false);
editText.setMaxLines(Integer.MAX_VALUE);
Por alguna razón, no funciona si aplica exactamente la misma configuración de xml. Deberías hacerlo programáticamente.
También hay otra solución posible: derivar de EditText y aplicar EditorInfo.IME_ACTION_DONE
manualmente. Pero para mí, la primera solución parece más simple.
Utilizar
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
editText.setRawInputType(InputType.TYPE_CLASS_TEXT);
y en XML:
android:inputType="textMultiLine"
Fuente: Texto de edición de línea múltiple con el botón de acción Hecho