Как показать пользовательскую область ввода с помощью InputMethodService

Я разрабатываю приложение для клавиатуры на основе InputMethodService. Одна из задач — иметь возможность накладывать область ввода на пользовательскую, чтобы отображать дополнительные значки слева/справа от области ввода, использовать разные цвета для некоторых частей текста и т. д.
Одна из обходным путем для этого является использование возможности «Рисовать поверх других приложений», но для этого требуется Разрешение SYSTEM_ALERT_WINDOW.

Есть ли другой способ для InputMethodService наложить область ввода на какое-либо пользовательское представление?


person Dmytro Kulykov    schedule 27.09.2018    source источник
comment
Если я правильно понимаю, что вы пытаетесь сделать, это создать собственное представление для вашей клавиатуры, а не только «буквенные клавиши», верно?   -  person flide    schedule 28.09.2018
comment
@flide Да, идея состоит в том, чтобы показать область ввода с дополнительными возможностями и функциями форматирования как часть клавиатуры. Пользователь сможет показать/скрыть эту настраиваемую область ввода, при ее скрытии введенный текст будет зафиксирован в исходной области ввода с помощью InputConnection. Отображение двух областей ввода одновременно может сбить пользователя с толку, поэтому я хотел бы покрыть исходную область ввода пользовательской, когда пользователь активирует эту пользовательскую область ввода.   -  person Dmytro Kulykov    schedule 28.09.2018


Ответы (1)


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

Но я думаю, что то, чего вы пытаетесь достичь, возможно. Я считаю, что лучший способ предоставить нужную вам функцию — это "Полноэкранный режим IME< /а>». После того, как вы решили, что пользователю нужно больше места для работы или что IME должен делать больше, чем просто реагировать на пользовательский ввод, запустите полноэкранный режим и предоставьте все дополнительные значки по своему усмотрению. Единственным недостатком этого пути будет то, что вы не только скроете «исходную» область ввода, но и все приложение, которое содержало эту область ввода, на время редактирования.

person flide    schedule 29.09.2018