Android: привязать SoftKeyboard (InputMethodService) к EditText - PullRequest
2 голосов
/ 21 октября 2010

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

До сих пор мне удавалось написать свою собственную SoftKeyboard на основе примера, который поставляется с Android SDK.Я могу вручную выбрать его в качестве метода ввода (длинный щелчок, метод ввода, * выбрать *).Затем SoftKeyboard работает нормально и делает все, что я хочу.Я также очистил контекстное меню, чтобы запретить изменение метода ввода (очевидно, в данный момент мне нужно, чтобы он был в меню, иначе я бы не смог выбрать свою SoftKeyboard).

Другими словами, осталось только одноэто привязка SoftKeyboard к EditText.

Я заметил кучу ime* -атрибутов на EditText, но они, похоже, не полезны для моей проблемы, так как я нехочу что-нибудь изменить в ключе действия.inputMethod требуется KeyListener, которого нет у SoftKeyboard (я пытался сделать его одним, но, похоже, проблема с загрузчиком классов, так как он не нашел мой класс => ClassNotFoundException).

Может кто-нибудь указать мне полезную информацию?

Ответы [ 2 ]

3 голосов
/ 03 ноября 2010

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

После дальнейших исследований я нашел действительно полезный вопрос о специализированной программной клавиатуре . Если вы столкнетесь с моей ситуацией, посмотрите там.

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

Я не могу поверить, что это невозможно сделать

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

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

Возможно, вы могли бы использовать тот же пользовательский интерфейс из вашего редактора методов ввода, что и всплывающее окно в вашей деятельности. Например, KeyboardView, по словам г-жи Хэкборн, является стандартом View и может использоваться как любой другой. Пользователь может нажать кнопку рядом с EditText, чтобы отобразить пользовательский интерфейс клавиатуры (например, анимированный слайд снизу вверх) или что-то в этом роде.

Я также очистил контекстное меню, чтобы запретить изменение метода ввода

Пожалуйста, позвольте пользователю выбрать метод ввода или не используйте EditText.

...