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

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

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

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

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

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

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

3 ответов


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

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

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

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

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

RealCalc Scientific Calculator

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

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


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


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

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


Как упоминалось @sebap123 клавиатура и KeyboardView класс-это тот, который вам нужно использовать,

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