Вид конкретного IME? - PullRequest
3 голосов
/ 05 мая 2011

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

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

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

1 Ответ

2 голосов
/ 05 мая 2011

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

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

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

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

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

...