我有EditText,用于在邮件(电子邮件,短信)中输入内容。我希望消息立即在ActionDone按钮单击上发布。我为此使用以下代码:

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

但我也希望此消息字段像其他任何Messenger应用一样都是多行的。我可以用以下代码实现:
android:inputType="textMultiLine"

问题在于,添加此行后,ActionDone按钮开始像Enter按钮一样工作。因此,我从未调用过用于捕获EditorInfo.IME_ACTION_DONE的回调。因此,每当用户按下该按钮时,光标就会移至新行,而不是发布消息。

如何同时保持EditText的多行行为(能够在多行上显示文本)和ActionDone按钮?

最佳答案

采用

editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
editText.setRawInputType(InputType.TYPE_CLASS_TEXT);

并以XML格式:
android:inputType="textMultiLine"

资料来源:Multi-line EditText with Done action button

10-07 19:35
查看更多