Поведение imeOptions, imeActionId и imeActionLabel

Я довольно новичок в разработке для Android, и яЯ пытаюсь понять, как настроить кнопки действий IME. Я'Я посмотрел документацию Google, но я могу найти очень мало информации об ожидаемом поведении.

Отофициальный гид Я понимаю, что кнопка действия клавиатуры может быть настроена с помощью атрибутов:

андроид: imeOptions Можно установить для текста / идентификатора кнопки, отображаемой рядом с пробелом, некоторые предварительно определенные значения (например, actionGo установить метку ключа наИдти и идентификатор до 2)андроид: imeActionLabel установите метку кнопки, отображаемой внутри области ввода, когда клавиатура работает в полноэкранном режиме, обычно в горизонтальном режиме. Может быть установлено любое строковое значение.андроид: imeActionId такой же, как предыдущий, но установить числовой идентификатор, переданный методу обратного вызова

Но после некоторых эмпирических попыток яобнаружил различное поведение между уровнем API 15 и следующими уровнями API.

мы настроили простой элемент EditText со следующими атрибутами:


и я'Мы проверили эффект с различными уровнями 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, что может оправдать другое поведение ...

Большое спасибо!

Ответы на вопрос(4)

Ваш ответ на вопрос