Я столкнулся с загадкой и не могу найти решение. По-видимому, JellyBean меняет способ обработки действий IME. Я нашел много веб-сайтов, предлагающих решение, которое действительно работает, но только для однострочного EditTexts
. Пример: Stackoverflow: onEditorAction
Мои виджеты EditText
работали отлично до JellyBean. Он будет правильно переносить слова, пока пользователь не нажмет клавишу «Готово» (возврат). Затем он перехватит событие с OnEditorActionListener
и обработает его соответствующим образом. Я пробовал несколько вариантов изменения настроек со следующими атрибутами XML безрезультатно:
- одноместныйПодкладка
- прокруткаГоризонтально
- тип ввода
- imeOptions
- линии
Я мог получить перенос слов только без запуска события onEditorAction или без переноса слов с запуском события onEditorAction. Как я могу получить перенос слов и одновременно обрабатывать клавишу ввода программной клавиатуры для JellyBean?
Обновление 1: Включая запрошенный код. Обратите внимание, что сейчас это работает для всех платформ, кроме JellyBean. Как я уже говорил ранее, пробовал несколько разных настроек XML безрезультатно.
Обновление 2: удалось заполучить Asus Transformer с JellyBean 4.1.1. Работает отлично. Так что, возможно, это ошибка конкретного устройства? Другое мое устройство JellyBean — это Nexus 7 с версией 4.1.2. Может ли кто-нибудь проверить это с другими устройствами?
Код:
private class OnMyEditorActionListener implements OnEditorActionListener {
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_GO) {
doSomething();
return true;
}
return false;
}
}
<EditText
android:id="@+id/editbox_box_et"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@null"
android:gravity="top|center_horizontal"
android:imeOptions="actionGo"
android:inputType="textMultiLine|textNoSuggestions"
android:padding="@dimen/spacing_half"
android:textSize="24sp" >
</EditText>