Создание SoftKeyboard с несколькими / альтернативными символами для каждой клавиши

Я следил за примерами на developer.android.com относительно методов ввода и играл с SoftKeyboard образец приложения. Вместе они дают более чем достаточно информации о создании простой клавиатуры.

Чего я не вижу в API, так это возможности создания альтернативных / нескольких символов для каждой клавиши, которая доступна на стандартной клавиатуре (клавиатура LatinIME).

enter image description here

Изображение выше является результатом длительного нажатия клавиши «a». При длительном нажатии клавиши можно заполнить всплывающее окно альтернативными символами.

enter image description here

Также можно дать всплывающую подсказку для некоторых клавиш, которая будет предлагать пользователю нажать и удерживать клавишу, чтобы открыть всплывающее меню.

Пока я не нашел ни одного источника информации о том, как это достигается, надеюсь, кто-нибудь сможет дать мне фору, а пока я буду следить за исходным кодом встроенной клавиатуры и посмотрю, смогу ли я может перепроектировать его.

Редактировать: Помогло бы, если бы ссылка developer.android.com на клавиатуру LatinIME не содержала ссылки на изображение Овцы :) Фактический исходный код для LatinIME.java .

Правка 2: В большей степени для справки, чем для чего-либо еще, это последовательность, которую я считаю обычным действием longPress, чтобы показать всплывающую клавиатуру в KeyboardView.java :

onTouchEvent()
onModifiedTouchEvent()
mHandkler.handleMessage() with MSG_LONGPRESS
openPopupIfRequired() 
onLongPress()

Редактировать 3:

Я до сих пор не понял этого - как добавить предложения ярлыков к ключам? Ответ предполагает, что он не встроен в API, и я действительно не нашел кода для этого. Однако клавиатура в 2.3.4 (API 10) показывает, что эта функциональность реализована:

enter image description here

Очень хотелось бы выяснить, как это делает ИТ, но в методе onDraw () нет нигде, что Я вижу - что заставляет меня думать, что он написан вне элемента KeyboardView. Однако я не могу найти файл макета , используемый для отображения элемента KeyboardView на встроенной клавиатуре. Если кто-нибудь знает, где его найти, возможно, это даст мне нужную подсказку.

Редактировать 4: Вопрос о предварительном просмотре клавиш перемещен сюда, поскольку он немного не по теме:

Как отключить окно предварительного просмотра клавиш SoftKeyboard?

44
задан 18 revs, 2 users 99% 23 May 2017 в 12:34
поделиться