Используйте кнопку готово, чтобы закрыть мою пользовательскую клавиатуру

#java #android #ime #android-input-method

#java #Android #ime #android-метод ввода

Вопрос:

Я создаю пользовательскую клавиатуру для Android в android Studio, и я почти реализовал все основные функции, необходимые для базовой клавиатуры, но я изо всех сил пытаюсь понять, как закрыть мою клавиатуру, когда я нажимаю клавишу готово в правом нижнем углу.

В основном все текстовое поле в приложении Android содержит imeOption, указывающее действие, для которого выполняется клавиша «Готово», например android:imeOptions="actionGo" , используется в строке URL Google Chrome и для выполнения поиска Chrome по клавише «Готово», которую я должен был использовать inputConnection.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_ENTER)); , чтобы заставить ее работать, и для android:imeOptions="actionNone" android:imeOptions="actionSearch" этого все работало нормально inputConnection.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER)); , но я не могу понять, что мне делать android:imeOptions="actionNext" , и android:imeOptions="actionDone"

Ответ №1:

Это зависит от размещения представления. Как если бы это был текст редактирования и его последнее представление в иерархии представлений, тогда вы можете установить для его представления android: imeOptions =»actionDone». Это скроет клавиатуру. И android: imeOptions =»actionNext», если используется в любом представлении, тогда он переместит фокус на следующий текст редактирования, если он есть.

Надеюсь, я понял ваш вопрос. Если нет, пожалуйста, уточните. Я бы с удовольствием помог.

Комментарии:

1. Да, именно так они работают, и эти действия (закрытие клавиатуры и переключение фокуса на следующий вид) выполняются с помощью клавиши enter или клавиши готово, которая расположена в правом нижнем углу любой обычной клавиатуры. Моя проблема здесь заключалась в том, что я создаю свою собственную «пользовательскую клавиатуру», которая должна выполнять это действие, например, закрывать клавиатуру и переключать фокус на следующий вид относительно соответствующего представления, но я не могу заставить это работать на моей «пользовательской клавиатуре»

2. @RajeshNadar Не могли бы вы поделиться своим кодом? потому что таким образом было бы легко распознать проблему.

3. Я использую InputMethodService для своей клавиатуры и OnKeyboardActionListener для мониторинга входных данных. Я использую onKey функцию, чтобы проверить, какая клавиша нажата, и использую объект InputConnection для выполнения задачи над edittext вот как это делается public void onKey(int primaryCode, int[] keyCodes) { InputConnection inputConnection = getCurrentInputConnection(); if (inputConnection != null) { switch (primaryCode) { case Keyboard.KEYCODE_DONE:

4. @RajeshNadar я не могу ответить на ваш вопрос. Если вы можете дать мне код, который я могу запустить напрямую и устранить неполадки, тогда было бы лучше

5. Как я могу поделиться с вами своим проектом?