Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Ranny
0 / 0 / 1
Регистрация: 29.07.2015
Сообщений: 10
#1

Обработка нажатия на Enter - Android

10.09.2015, 09:38. Просмотров 238. Ответов 0
Метки нет (Все метки)

Имеется RecyclerView, заполняемый обьектами CardView, которые состоят из 2 EditText, расположенных горизонтально, CardView распологаются вертикально.
Обрабатываю событие нажатия Enter при вводе текста в EditText
Java
1
2
3
4
5
6
7
8
9
10
11
CritViewHolder.critName.setOnKeyListener(new View.OnKeyListener() {
                public boolean onKey(View v, int keyCode, KeyEvent event) {
                    if (event.getAction() == KeyEvent.ACTION_DOWN &&
                            (keyCode== KeyEvent.KEYCODE_ENTER)) {
                        temp.setCriteriaName(CritViewHolder.critName.getText().toString());
 
                        return true;
                    }
                    return false;
                }
            });
работает более менее. Не нравится одна вещь фокус элемента после нажатия на enter смещается не вниз, а по диагонали(если EditText был выделен вручную), но если фокус получен программно смещение идет вниз.
Хотелось бы сделать одно из 2:
1)при нажатии Enter фокус не смещается, клавиатура сворачивается
2)при нажатии Enter фокус всегда смещается вниз, клавиатура не сворачивается

пробовал разные варианты imeOptions но либо 0 изменений, либо не срабатывает условие if(оно конечно понятно почему не срабатывает, но подходящий KeyEvent тоже искал и не нашел) со всеми вытекающими.

Вопрос в том какие сочетания KeyEvent и imeOptions дадут требуемый результат?

Есть еще вариант как-то забиндить значение текста в EditText/ значения адаптера к полям класса, но тут тоже не особо успешны поиски

Добавлено через 1 час 48 минут
Решено
Java
1
2
3
4
5
6
7
8
9
10
11
12
            CritViewHolder.critName.setOnEditorActionListener(new EditText.OnEditorActionListener() {
                @Override
                public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                    if (actionId == EditorInfo.IME_ACTION_DONE) {
                        temp.setCriteriaName(CritViewHolder.critName.getText().toString());
                        hideKeyboard();
                        return true;
                    }
                    return false;
                }
 
            });
imeOptions="actionDone"
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2015, 09:38     Обработка нажатия на Enter
Посмотрите здесь:

Android CheckBox обработка события нажатия
Обработка нажатия по координатам Android
Android Обработка нажатия каждого элемента List View
Android Обработка нажатия CheckBox в ListView
Обработка нажатия на RadioButton Android
Android Обработка нажатия элементов контекстного меню
Обработка длительного нажатия Android
Обработка нажатия на часть элемента списка Android
Обработка нажатия кнопок Android
Android Обработка длительного нажатия
Android AlertDialog обработка нажатия PositiveButton
Android Обработка нажатия кнопок

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru