Я разрабатываю приложение для клавиатуры на основе InputMethodService. Одна из задач — иметь возможность накладывать область ввода на пользовательскую, чтобы отображать дополнительные значки слева/справа от области ввода, использовать разные цвета для некоторых частей текста и т. д.
Одна из обходным путем для этого является использование возможности «Рисовать поверх других приложений», но для этого требуется Разрешение SYSTEM_ALERT_WINDOW.
Есть ли другой способ для InputMethodService наложить область ввода на какое-либо пользовательское представление?
Как показать пользовательскую область ввода с помощью InputMethodService
Ответы (1)
Итак, первое: я не думаю, что IME может перекрывать область ввода, потому что каждый раз, когда вы увеличиваете размер своего ime, размер приложения, содержащего область ввода, будет уменьшаться, чтобы сохранить его. на экране.
Но я думаю, что то, чего вы пытаетесь достичь, возможно. Я считаю, что лучший способ предоставить нужную вам функцию — это "Полноэкранный режим IME< /а>». После того, как вы решили, что пользователю нужно больше места для работы или что IME должен делать больше, чем просто реагировать на пользовательский ввод, запустите полноэкранный режим и предоставьте все дополнительные значки по своему усмотрению. Единственным недостатком этого пути будет то, что вы не только скроете «исходную» область ввода, но и все приложение, которое содержало эту область ввода, на время редактирования.
InputConnection
. Отображение двух областей ввода одновременно может сбить пользователя с толку, поэтому я хотел бы покрыть исходную область ввода пользовательской, когда пользователь активирует эту пользовательскую область ввода. - person Dmytro Kulykov   schedule 28.09.2018