Пользовательская «Клавиатура», встроенная в приложение на Android - PullRequest
33 голосов
/ 07 июля 2010

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

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

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

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

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

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

Ответы [ 3 ]

19 голосов
/ 18 января 2012

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

Как указано в оригиналевопрос:

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

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

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

RealCalc Scientific Calculator

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

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


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

10 голосов
/ 19 января 2012

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

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

2 голосов
/ 23 февраля 2016

Как упомянуто @ sebap123 Keyboard и KeyboardView класс - это то, что вам нужно использовать,

Далее, для реализации, есть краткое подробное руководство .

...