У меня есть 2 элемента EditText и 2 обработчика на нажатие Enter для них на клаве. Пример обработчика вот:
editText.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
//...
return true;
}
return false;
}
});
Я не хочу, чтобы при нажатии Enter фокус переходил на следующий EditText(нужно чтобы он убрался с выбранного и не перешел на следующий).
Этого я добился, прописав в xml android:imeOptions="actionDone"
И тут возникла проблема, что в обработчике перестала работать проверка:
((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER))
Задача:сделать так, чтобы после нажатия Enter фокус не переходил на следующий EditText, при этом был указан параметр android:imeOptions="actionGo"
Долго думал и шаманил. В итоге получилось. Вот так теперь выглядит этот кусок кода:
editText.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_ENTER) {
//...
return true;
}
return false;
}
});
А теперь объясню в чем разница и особенности.
(event.getAction() == KeyEvent.ACTION_DOWN), без этого условия на следующую строку больше не переходит.return true; внутри условия, то даже без условия из пункта 1 будет переход.Как итог - условие (event.getAction() == KeyEvent.ACTION_DOWN)надо убрать, за присутствием return true; внутри условия проследить.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей