Como implementar o Multiline EditText com o botão ActionDone (sem o botão Enter)
Eu tenho o EditText, que é usado para inserir conteúdo em mensagens (e-mails, sms). Quero que a mensagem seja postada imediatamente no clique no botão ActionDone. Eu uso o seguinte código para isso:
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;
}
});
Mas também quero que esse campo de mensagem seja multilinha, como em qualquer outro aplicativo de mensagens. Eu posso conseguir isso com esta linha:
android:inputType="textMultiLine"
O problema é que, após adicionar esta linha, o botão ActionDone começa a agir como o botão Enter. Então, meu retorno de chamada para capturarEditorInfo.IME_ACTION_DONE
nunca é chamado. Portanto, cada vez que o usuário pressiona o botão, o cursor se move para a nova linha, em vez de postar a mensagem.
Como posso manter o comportamento multilinha do EditText (capacidade de mostrar texto em várias linhas) e o botão ActionDone?