как перехватить ключевое событие - PullRequest
0 голосов
/ 17 марта 2010

Я хотел бы ограничить длину текста виджета EditText, И если пользователь вводит больше символов, чем ограниченная длина, Я хочу показать всплывающее окно с предупреждением, но не могу показать всплывающее окно.

Проблема в том, что мы не можем показать всплывающее окно при наборе, Вероятно, многие люди думают, как использовать OnKeyListener или OnKeyDown. Но когда составляется слово, ничего не входит в OnKeyListener или OnKeyDown, Таким образом, мы не можем показать всплывающее окно, когда мы хотим.

Есть ли у кого умная идея решить эту проблему?

Ответы [ 2 ]

1 голос
/ 17 марта 2010

Вы сможете удалить фокус с виджета и показать свое сообщение.

   InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);  
   imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0); 
0 голосов
/ 17 марта 2010

OnKeyboardActionListener предназначен для реализации программных клавиатур.

OnKeyListener и OnKeyDown не вызываются, как вы обнаружили, при использовании программной клавиатуры. Их вызывают только при использовании аппаратной клавиатуры, которой нет на многих устройствах Android.

Я предполагаю, что вы пытаетесь захватить ключевые события, происходящие в области EditText. В этом случае лучше всего обрабатывать как программный, так и аппаратный ввод клавиатуры: зарегистрировать TextWatcher с помощью метода addTextChangedListener ().

Обратите внимание, что на телефонах с Android 2.1 и более поздними версиями, таких как Nexus One, пользователи могут использовать распознавание речи для ввода текста в текстовый файл EditText вместо ввода текста. Когда они это сделают, вы можете получить полные слова или даже полные предложения, введенные сразу. Поэтому вам нужно проверить все содержимое поля EditText при изменении содержимого.

...