So implementieren Sie Multiline EditText mit der ActionDone-Schaltfläche (ohne die Eingabetaste)

Ich habe EditText, der zum Eingeben von Inhalten in Nachrichten (E-Mails, SMS) verwendet wird. Ich möchte, dass die Nachricht sofort auf den ActionDone-Button geklickt wird. Ich benutze dazu folgenden Code:

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

Aber ich möchte auch, dass dieses Nachrichtenfeld mehrzeilig ist, wie in allen anderen Messenger-Apps. Ich kann es mit dieser Zeile erreichen:

android:inputType="textMultiLine"

Das Problem ist, dass die ActionDone-Schaltfläche nach dem Hinzufügen dieser Zeile die Funktion der Eingabetaste annimmt. Also mein Rückruf für das Fangen vonEditorInfo.IME_ACTION_DONE wird nie aufgerufen. Jedes Mal, wenn der Benutzer diese Taste drückt, springt der Cursor in eine neue Zeile, anstatt eine Nachricht zu posten.

Wie kann ich das mehrzeilige Verhalten von EditText (Möglichkeit zum Anzeigen von Text in mehreren Zeilen) und die Schaltfläche "ActionDone" beibehalten?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage