Можно ли определить, когда Doneбыла нажата клавиша экранной клавиатуры?
Можно ли определить, когда Doneбыла нажата клавиша экранной клавиатуры?
Ответы:
Да, это возможно:
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;
Информация о редакторе - наиболее полезный класс, когда вам приходится иметь дело с любым типом пользовательского ввода в вашем приложении 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;
}
});
Это можно сделать с помощью 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;
}
EditorInfo.IME_ACTION_SEARCHвместо кнопки поиска линз.