В настоящее время я разрабатываю простую библиотеку для создания игр на Android. Я почти закончил и хочу добавить еще несколько функций. Одна функция, которую я хотел бы добавить, — это метод, который будет отображать/скрывать экранную клавиатуру (мягкую клавиатуру). Я хочу получить все, что было напечатано, и вернуть его другим методом.
Моя кодовая база состоит из Activity, которое запускается, и SurfaceView, который выполняет рендеринг и сенсорный ввод (и некоторые другие классы для игрового цикла, спрайтов, звука и т. д.). Поскольку это должна быть небольшая библиотека, я не хочу возиться с XML.
Как я могу показать + скрыть / переключить клавиатуру и, получающую ее ввод?
Клавиатуры работают через InputConnection. Если вы сосредоточите представление в своем приложении, платформа вызовет getInputConnection для этого представления. Если представление возвращает ненулевое значение, оно отправит все данные с клавиатуры и сопоставит их с вызовами функций в InputConnection. Поэтому все, что вам нужно сделать, это переопределить эту функцию в вашем SurfaceView и вернуть пользовательский InputConnection.
InputConnection — это большой API, но наиболее важными для реализации являются commitText (отправляет строку текста с клавиатуры в представление) и deleteSurroundingText (используется для удаления). Остальные API также должны быть реализованы, но это основные.