У меня есть, EditText
где я устанавливаю следующее свойство, чтобы я мог отобразить кнопку Готово на клавиатуре, когда пользователь нажимает на EditText.
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
Когда пользователь нажимает кнопку «Готово» на экранной клавиатуре (ввод закончен), я хочу изменить RadioButton
состояние.
Как я могу отследить готовую кнопку, когда она нажата с экранной клавиатуры?
android
android-edittext
ime
D-Man
источник
источник
Ответы:
Я получил комбинацию ответов Робертса и Чирага:
Обновление: приведенный выше код иногда активирует обратный вызов дважды. Вместо этого я выбрал следующий код, который я получил от клиентов чата Google:
источник
isPreparedForSending()
и почему возвращает второй методtrue
?Попробуйте это, это должно работать для того, что вам нужно:
источник
<EditText android:imeOptions="actionDone" android:inputType="text"/>
Java-код:
источник
Я знаю, что этот вопрос старый, но я хочу указать, что сработало для меня.
Я попытался использовать пример кода с сайта разработчиков Android (показан ниже), но он не сработал. Поэтому я проверил класс EditorInfo и понял, что целочисленное значение IME_ACTION_SEND было указано как
0x00000004
.Пример кода от разработчиков Android:
Итак, я добавил целочисленное значение в мой
res/values/integers.xml
файл.Затем я отредактировал свой файл макета
res/layouts/activity_home.xml
следующим образомИ тогда пример кода сработал.
источник
Подробнее о том, как установить OnKeyListener и как он слушает кнопку Готово.
Сначала добавьте OnKeyListener в секцию инструментов вашего класса. Затем добавьте функцию, определенную в интерфейсе OnKeyListener:
Учитывая объект EditText:
источник
Хотя большинство людей ответили на вопрос напрямую, я хотел бы подробнее остановиться на концепции, стоящей за этим. Во-первых, я привлек внимание IME, когда создавал активность по умолчанию для входа. Это сгенерировало некоторый код для меня, который включал следующее:
Вы уже должны быть знакомы с атрибутом inputType. Это просто сообщает Android тип ожидаемого текста, например адрес электронной почты, пароль или номер телефона. Полный список возможных значений можно найти здесь .
Это был, однако, признак того,
imeOptions="actionUnspecified"
что я не понимал его цели. Android позволяет вам взаимодействовать с клавиатурой, которая появляется в нижней части экрана при выделении текста с помощьюInputMethodManager
. В нижнем углу клавиатуры есть кнопка, обычно она говорит «Далее» или «Готово», в зависимости от текущего текстового поля. Android позволяет настроить это с помощьюandroid:imeOptions
. Вы можете указать кнопку «Отправить» или «Далее». Полный список можно найти здесь .При этом, вы можете слушать нажатия на кнопку действия, задав условие
TextView.OnEditorActionListener
дляEditText
элемента. Как в вашем примере:Теперь в моем примере у меня был
android:imeOptions="actionUnspecified"
атрибут. Это полезно, когда вы хотите попытаться войти в систему, когда пользователь нажимает клавишу ввода. В своей деятельности вы можете обнаружить этот тег, а затем попытаться войти в систему:источник
Благодаря chikka.anddev и Alex Cohn в Котлине это:
Здесь я проверяю
Enter
ключ, потому что он возвращаетEditorInfo.IME_NULL
вместоIME_ACTION_DONE
.См. Также Android imeOptions = "actionDone" не работает . Добавьте
android:singleLine="true"
вEditText
.источник
Kotlin Solution
Базовый способ справиться с этим в Котлине:
Удлинение Котлина
Используйте это, чтобы просто позвонить
edittext.onDone{/*action*/}
в ваш основной код. Делает ваш код более читабельным и понятнымНе забудьте добавить эти опции в ваш текст редактирования
источник
setOnEditorActionListener
, хотя. Возможно, это просто вопрос локальных настроек конфигурации, но мой линтер действительно очень хочет , чтобы яelse
тоже добавил ветку, чтобы принять "true" в качестве оператора возврата слушателя (в отличие отif
-block).Если вы используете аннотации Android https://github.com/androidannotations/androidannotations
Вы можете использовать аннотацию @EditorAction
источник