Вид конкретного IME?
У меня есть пользовательское представление, для которого я хочу, чтобы пользователь мог вводить символы из набора символов, определенного в приложении. Чтобы сделать это, насколько я понимаю, мне нужно написать метод ввода службы. Пользователь должен не только установить его, но и затем включить IME в меню "Настройки"> "Язык и клавиатура", а затем выбрать пользовательский IME для использования в представлении.
Это кажется действительно сумасшедшим. Я хочу, чтобы этот IME использовался только для одного просмотра в одном приложении. Я не хочу, чтобы он был доступен для всей системы или заставлял пользователя вносить глобальные изменения настроек.
Единственная альтернатива, которую я вижу, - это определение собственного пользовательского представления в приложении и имитация IME (возможно, полноэкранного), когда представление получает фокус. Разве нет ничего лучше?
1 ответ
Я не думаю, что IME предназначены для такого рода задач. Их концепция заключается в том, чтобы пользовательский ввод был стандартизирован, чтобы его можно было использовать в нескольких приложениях от разных поставщиков.
Моя стратегия будет похожа на то, что вы думаете:
- предотвратить появление программной клавиатуры,
- перехватите нажатие кнопки меню, чтобы показать свое собственное,
- добавить пользовательский макет (вероятно,
GridView
илиTableView
внутриRelativeLayout
с нижней гравитацией) - использовать
OnItemClickListener
- отправить необходимые
KeyEvent
с корнемView
, Если персонажи придуманы,KeyCodes
даже не нужно относиться к символу ASCII. Вы просто перехватываете код и используете его по своему желанию.
Извините, я не могу дать вам вариант, как вы просили, но эта альтернатива, кажется, не намного больше работы, чем создание совершенно нового IME.
Изменить: после прочтения соответствующего вопроса имеет смысл использовать android.inputmethodservice.KeyboardView
вместо того, чтобы изобретать колесо с GridView
,