Android обнаруживает нажатие клавиши Done для экранной клавиатуры

111

Можно ли определить, когда Doneбыла нажата клавиша экранной клавиатуры?

панкаджагарвал
источник

Ответы:

277

Да, это возможно:

editText = (EditText) findViewById(R.id.edit_text);

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_DONE) {
            // do your stuff here
        }
        return false;
    }
});

Обратите внимание, что вам нужно будет импортировать следующие библиотеки:

import android.view.KeyEvent;
import android.view.inputmethod.EditorInfo;
import android.widget.TextView;
Сабольч Береч
источник
Спасибо, вы дали мне отличную отправную точку. Просто мне нужно было использовать EditorInfo.IME_ACTION_SEARCHвместо кнопки поиска линз.
TechNyquist
Привет, это возможно с ButterKnife? @ Mikeyaworski @ SzabolcsBerecz
Маулик Додия 09
1
@MaulikDodia Вы можете использовать @OnEditorAction нож для масла ( в )
Чудакулли
Спасибо вам. Я буду с ним @ Ridcully
Маулик Додия 01
3

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

Вы можете попробовать с IME_ACTION_DONE .

Это действие выполняет Doneоперацию без ввода данных и IMEзакрывается.

Использование setOnEditorActionListener

EditTextObj.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        boolean handled = false;
        if (actionId == EditorInfo.IME_ACTION_DONE) {
            /* Write your logic here that will be executed when user taps next button */
            handled = true;
        }
        return handled;
    }
});
IntelliJ Amiya
источник
Как решить ту же проблему с настраиваемой клавиатурой?
Gaju Kollur
0

Это можно сделать с помощью Butterknife

@OnEditorAction(R.id.signInPasswordText)
boolean onEditorAction(TextView v, int actionId, KeyEvent event){
    if (actionId == EditorInfo.IME_ACTION_DONE || event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
        /* Write your logic here that will be executed when user taps next button */
    }
    return false;
}
Зайин Криг
источник