Подтвердить что ты не робот

Пользовательская "клавиатура", встроенная в приложение на Android

Я искал создание пользовательской клавиатуры для своего приложения. Сначала я начал смотреть на SoftKeyboard для примеров SDK, но чтение группы разработчиков Android привело меня к этому сообщению:

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

Как мне создать пользовательский ввод в пользовательском интерфейсе? Я имею в виду, есть ли способ расширить приложение "Клавиатура" или что-то еще и использовать его только в моем приложении?

Функции, необходимые для клавиатуры:

  • Клавиша Shift для отображения некоторых других клавиш
  • Специальные клавиши, такие как квадратный корень или PI
  • и др.

PS: уродливым решением может быть, например, создание таблицы ImageButton, но я хотел сделать что-то чистое.

4b9b3361

Ответ 1

Я не уверен, есть ли прямое решение для этого (в той степени, что даже можно понять реальную причину оригинального вопроса).

Как указано в исходном вопросе:

Если вам нужен какой-то определенный для приложения вход, вы должны его встроить в свой интерфейс вместо того, чтобы выталкивать его в общий IME.

Что подразумевается под этим, не то, что вы в своем приложении должны пытаться создавать такие функции ввода, расширяя или изменяя мягкую клавиатуру на телефоне. Существует так много разных мягких клавиатур (и в основном, мягкая клавиатура - это еще одно приложение), так как большинство производителей телефонов создают свою собственную версию, и люди загружают сторонние клавиатуры (такие как Swype или SwiftKey и т.д.), И я не могу что у вас есть способ "взломать" в них, чтобы добавить несколько кнопок или что бы вы ни хотели (что также могло бы стать серьезным ядром безопасности, другая причина, почему это, вероятно, невозможно).

Что вместо приведенной выше цитаты, так это то, что вам нужно создать другую форму ввода, кроме клавиатуры. Один из таких примеров и очень хороший, если можно добавить, заключается в том, как выглядит RealCalc Scientific Calculator:

RealCalc Scientific Calculator

Теперь это не открытый исходный код, поэтому я могу только догадываться, как выглядит код (но это не должно быть слишком сложно): в его простейшей форме это всего лишь сетка с большим количеством . Каждая кнопка обрабатывает событие onClick, что означает выполнение какого-либо действия (изменение метки на некоторых других кнопках, отображение меню, отображение текста на верхней метке или что-то еще), и, вероятно, в значительной степени для этого. И, конечно, мягкая клавиатура телефона никогда не отображается (так как вам не нужна клавиатура со всеми этими кнопками (а также нет никаких полей ввода для записи чего-либо)).

Все это сводится к уже упомянутой цитате: Если вам нужен какой-то определенный для приложения вход, вы должны создать его в свой пользовательский интерфейс. Или, другими словами: создавать кнопки (и не отображать мягкую клавиатуру, если она вам не нужна) и делать что-то, когда вы нажимаете на них.


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

Ответ 2

По моему скромному мнению, вы должны взглянуть на начало справки о клавиатуре и клавиатуре http://developer.android.com/reference/android/inputmethodservice/Keyboard.html и http://developer.android.com/reference/android/inputmethodservice/KeyboardView.html.

Здесь вы можете увидеть пример определения клавиатуры с использованием файла XML. Я думаю, что это то, что вы ищете.