Вид конкретного IME?

У меня есть пользовательское представление, для которого я хочу, чтобы пользователь мог вводить символы из набора символов, определенного в приложении. Чтобы сделать это, насколько я понимаю, мне нужно написать метод ввода службы. Пользователь должен не только установить его, но и затем включить IME в меню "Настройки"> "Язык и клавиатура", а затем выбрать пользовательский IME для использования в представлении.

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

Единственная альтернатива, которую я вижу, - это определение собственного пользовательского представления в приложении и имитация IME (возможно, полноэкранного), когда представление получает фокус. Разве нет ничего лучше?

1 ответ

Решение

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

Моя стратегия будет похожа на то, что вы думаете:

  • предотвратить появление программной клавиатуры,
  • перехватите нажатие кнопки меню, чтобы показать свое собственное,
  • добавить пользовательский макет (вероятно, GridView или TableView внутри RelativeLayout с нижней гравитацией)
  • использовать OnItemClickListener
  • отправить необходимые KeyEventс корнем View, Если персонажи придуманы, KeyCodes даже не нужно относиться к символу ASCII. Вы просто перехватываете код и используете его по своему желанию.

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

Изменить: после прочтения соответствующего вопроса имеет смысл использовать android.inputmethodservice.KeyboardView вместо того, чтобы изобретать колесо с GridView,

Другие вопросы по тегам