我有一个EditText用于输入邮件、短信等消息内容,我希望在用户点击“完成”按钮时立即发布该消息。我使用以下代码实现:
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;
}
});
但是我也希望这个消息框可以像其他通讯应用一样支持多行输入。可以通过添加以下代码实现:
android:inputType="textMultiLine"
问题是,添加这行代码后,ActionDone按钮开始像Enter按钮一样起作用。 因此,我用于捕获EditorInfo.IME_ACTION_DONE
的回调永远不会被调用。 所以每次用户按下该按钮时,光标都会移动到新行而不是发布消息。
我如何保持EditText的多行行为(能够显示多行文本)和ActionDone按钮?
editText.setRawInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_URI); editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
,您不需要在EditText XML属性中指定任何内容。一些键盘会根据此InputType显示Web地址的建议或显示“.com”键。 - Mr-IDE