我有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