Поведение imeOptions, imeActionId и imeActionLabel
Я довольно новичок в нативной разработке Android и пытаюсь понять, как настроить кнопки действий IME. Я просмотрел документацию Google, но могу найти очень мало информации об ожидаемом поведении.
Изофициальный гид Я понимаю, что кнопка действия клавиатуры может быть настроена с помощью атрибутов:
андроид: imeOptions Можно установить для текста / идентификатора кнопки, отображаемой рядом с пробелом, некоторые предварительно определенные значения (например, actionGo установить метку ключа наИдти и идентификатор до 2)андроид: imeActionLabel установите метку кнопки, отображаемой внутри области ввода, когда клавиатура работает в полноэкранном режиме, обычно в горизонтальном режиме. Может быть установлено любое строковое значение.андроид: imeActionId такой же, как предыдущий, но установить числовой идентификатор, переданный методу обратного вызоваНо после некоторых эмпирических попыток я обнаружил различное поведение между уровнем API 15 и следующими уровнями API.
Я установил простой элемент EditText со следующими атрибутами:
<EditText
...
android:imeOptions="actionGo"
android:imeActionLabel="Custom"
android:imeActionId="666"
android:inputType="text"/>
и я проверил эффект с различными уровнями API как в портретном, так и в ландшафтном режиме. Вот результат.
Уровень API 15 - 4.0.3
В портретном режиме ключевая меткаИдти и идентификатор действия, переданный методу обратного вызова, равен 2, в соответствии с настройкой imeOptions.
В ландшафтном режиме ключевой ярлык / идентификаторИдти/ 2 в качестве портретного режима, в то время как кнопка, отображаемая в области ввода,изготовленный на заказ/ 666, соответственно атрибутам imeActionLabel и imeActionId.
API уровня 16, 17 и 18 - 4.1.2, 4.2.2 и 4.3
Как в портретном, так и в ландшафтном режиме кнопка и кнопка отображаются сизготовленный на заказ метка и привязаны к 666 id, игнорируя атрибут imeOptions.
Это несоответствие в поведении довольно раздражает, потому что:
при уровне API> = 16 вы не можете различить кнопку и кнопку области вводас уровнем API = 15 вы не можете установить любой пользовательский текст для ключевой кнопки.Знаете ли вы, как получить это как в API 15 и 16+? Или, если есть способ получить согласованное поведение во всех (или хотя бы в части) версиях API?
Может быть, я что-то упускаю в настройках IME, что может оправдать другое поведение ...
Большое спасибо!