Прочитал на этом сайте и на его английском прародителе много схожих вопросов и ответов, перепробовал разные условия if, но так и не понял, почему в английской раскладке все работает так, как я и ожидаю, тогда как в русской - нажатие enter просто переводит в новую строку (неужели код нажатия клавиши зависит от раскладки?). У EditText задан атрибут inputType="textMultiLine".
public boolean onEditorAction(TextView textView, int actionId, KeyEvent event) {
if (event != null) {
if ((event.getKeyCode() == KeyEvent.KEYCODE_ENTER) &&
(event.getAction() == KeyEvent.ACTION_DOWN)) {
// сохраняем текст, введенный до нажатия Enter в переменную
currentMessage = editText.getText().toString();
editText.setText("");
return true;
}
}
return false;
}
Пробовал менять KeyEvent.ACTION_DOWN на actionId == EditorInfo.IME_ACTION_SEND с предварительным editText.setImeActionLabel("SEND", EditorInfo.IME_ACTION_SEND);, но это не помогло.
Заранее благодарю за ответ.
Java
editText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
boolean handled = false;
if (actionId == EditorInfo.IME_ACTION_SEND) {
currentMessege = editText.getText().toString();
setText(currentMessege);
editText.setText("");
handled = true;
}
return handled;
}
});
XML
<EditText
...
android:inputType="textImeMultiLine" //обязательно
android:imeOptions="actionSend" />
Вместо textMultiLine
Используйте android:inputType="textImeMultiLine"
- проверил лично, работает на все 100% при русской и английской раскладке.
Документация
P.S. Вкратце, "Enter" на клавиатуре - это imeOptions
(Specify the Input Method Action), существуют:
и т.д
в Java нужно обозначать .IME_ACTION_*
, в xml android:imeOptions="action*"
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Проблема заключается в том, что бывает, при первом за день запуске приложения, SoundPool не воспроизводит мелодиюActivity запускается, а мелодии нет
После использования CosturaFody почти все dll пошли в exe, но пару dll, которые в папках, не могу закинуть в exe
Есть C# проект с GUIЕсть задача реализовать отправку сообщения по нажатию кнопки с сервера клиенту