PaulTMatik
@PaulTMatik

Как включить кнопку во время ввода в текстовое поле?

Во время запуска приложения, выводится alertDialog с полем ввода и одной кнопкой.
Кнопка по-умолчанию выключена (Поле должно содержать хоть какой-нибудь текст)

Во время ввода текста поле должно проверятся, и если оно содержит хотябы один символ, то кнопку сделать активной.

AlertDialog addLessonDialog = addLessonDialogBuilder.create();
addLessonDialog.show();

final Button addLessonBtn = addLessonDialog.getButton(AlertDialog.BUTTON_POSITIVE);
addLessonBtn.setEnabled(false);

lessonNameFld.setOnKeyListener(new View.OnKeyListener(){
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if (event.getAction() == KeyEvent.ACTION_UP) {
            addLessonBtn.setEnabled(true);
            if (lessonNameFld.getText().toString().isEmpty()) {
                addLessonBtn.setEnabled(false);
            }
        }
        return false;
    }
});


Проблема: Это работает с физической клавиатурой, экранная клавиатура включает кнопку только после нажатия enter
  • Вопрос задан
  • 2297 просмотров
Решения вопроса 1
PaulTMatik
@PaulTMatik Автор вопроса
Сам спросил — сам ответил.
.setOnKeyListener(...)
Используется как раз таки для обработки нажатий аппаратной клавиатуры. В моём случае нужно было просто отслеживать изменения с помощью textWatcher()
lessonNameFld.addTextChangedListener(new TextWatcher() {
    @Override
    public void afterTextChanged(Editable s) {
        addLessonBtn.setEnabled(true);
        if (lessonNameFld.getText().toString().isEmpty()) {
            addLessonBtn.setEnabled(false);
        }
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы