Как приложение для Android загружает клавиатуру? - PullRequest
3 голосов
/ 15 октября 2010

Мне нужно вызвать несколько разных клавиатур: «стандартную» клавиатуру с клавишами Ctrl и Alt;возможно курсорная клавиатура;и т. д.

Я нашел класс Keyboard, который позволил бы мне определить клавиатуру в ресурсе XML.Я обнаружил, что класс KeyboardView имеет метод setKeyboard ... и до сих пор я не нашел ни одного другого класса, который бы использовал экземпляр Keyboard.KeyboardView?Я попытался добавить один в XML моей деятельности;найти его во время выполнения с findViewById;и затем вызывая setKeyboard ... но все, что я сделал, это испортило мою раскладку, а не вызвало специальную клавиатуру.

Ответы [ 3 ]

3 голосов
/ 25 октября 2010

Это оказывается очень выполнимым, и мои первоначальные проблемы, вероятно, были связаны с новизной в Android (это мое первое приложение для Android), а не с KeyboardView. В частности, я привык к тому, что видимость - это простое двоичное свойство.

В любом случае:

  1. Объявите KeyboardView в вашем XML-файле с android:visibility="gone".
  2. Прежде чем сделать вид видимым, позвоните setKeyboard(), чтобы подключить клавиатуру. Это важно, поскольку KeyboardView получает свой размер с клавиатуры.
  3. Чтобы получить необработанные ключевые события, позвоните KeyboardView.setOnKeyboardActionListener(). После рефакторинга этой функциональности с Dialog обратно на мой основной View я поместил функциональность OnKeyboardActionListener в отдельный класс, но это не обязательно.
  4. Я звоню keyboardView.setEnabled(true);. Кажется, это не необходимо , но я не уверен (пока), при каких обстоятельствах это будет иметь значение; возможно только если вы позвоните setEnabled(false).
  5. Я звоню keyboardView.setPreviewEnabled(true); - это особенно полезно, если пользователь не будет получать визуальную обратную связь от ввода биокса прямо над клавиатурой.
  6. Затем, когда клавиатура полностью настроена, позвоните keyboardView.setVisibility(VISIBLE);.

Чтобы скрыть клавиатуру при необходимости, просто наберите keyboardView.setVisibility(GONE);. Чтобы сменить клавиатуру (как на клавише Shift или на клавиатуре с циклическим изменением символа, просто вызовите setKeyboard снова. Я использую Map<<Integer, Keyboard> для реализации шаблона отложенного создания; слабая ссылка может быть желательно, если программа будет работать долго и клавиатура не будет сильно использоваться.

0 голосов
/ 15 октября 2010

с использованием атрибута inputType в представлении editText поможет выбрать между различными системными клавиатурами (телефон, электронная почта и т. Д.). Также приложение APIDemos, поставляемое с SDK, имеет пример того, как реализовать принудительное принудительное использование.пользовательская клавиатура только для вашего приложения.

0 голосов
/ 15 октября 2010

Keyboard и KeyboardView предназначены для создания двигателей с альтернативным методом ввода (IME). Затем они могут быть выбраны пользователем , точно так же, как они могут устанавливать Swype, Graffiti и другие из Android Market.

Вы, как разработчик, можете создать такой IME, но не можете навязать его пользователю.

...