type texto textedit studio propiedades personalizar password not example estilos edittext editar editable como color cambiar agregar android android-edittext multiline ime imeoptions

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.