У меня есть EditText, который используется для ввода содержимого сообщений (сообщений электронной почты, смс). Я хочу, чтобы сообщение было немедленно отправлено на кнопку ActionDone. Я использую следующий код для этого:Как реализовать многострочный 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;
}
});
Но я также хочу, чтобы это поле сообщения, чтобы быть многострочным, как и в любых других приложениях мессенджеров. Я могу добиться этого с этой линией:
android:inputType="textMultiLine"
Проблема заключается в том, что после добавления этой строки кнопка ActionDone начинает действовать как кнопка Enter. Поэтому мой callback для ловли EditorInfo.IME_ACTION_DONE
никогда не называется. Поэтому каждый раз, когда пользователь нажимает эту кнопку, курсор перемещается в новую строку вместо отправки сообщения.
Как сохранить как многострочное поведение EditText (возможность отображения текста на нескольких строках), так и кнопку ActionDone?
Вы уверены, что это сработало? Я не могу заставить его работать – silverFoxA
@silverFox да, это сработало для меня. Какие свойства вы определяете для своего EditText в xml? – Ruslan
спасибо, что это сработало – silverFoxA