Использование Android: атрибут Digits для ограничения символов останавливает действие следующей кнопки

У меня есть несколько полей EditText в приложении для Android, и я использовал android: digits, чтобы не вводить недопустимые символы.

например: android:digits="@string/validchars" (где «validchars» - это строковый ресурс, содержащий все допустимые символы, например A – Z, 0–9 и некоторые знаки препинания)

Проблема в том, что если пользователь нажимает клавишу ENTER на программной клавиатуре, он переводит их в следующее поле, но, поскольку я добавил бит android: digits, это перестало работать. Я пробовал добавить \ n к validchars, но это просто разрешает возврат каретки в однострочном текстовом поле (!), Поэтому не помогает. Я пробовал возиться с imeOptions (добавляя actionNext и т. Д.), Но это тоже не помогло. Я читал о TextWatchers и InputFilters, но оба кажутся слишком сложными для того, что я пытаюсь сделать, и бит android:digits отлично работает, останавливая недопустимые символы.

Есть у кого-нибудь идеи?

Я использую Android SDK версии 8 и нацелен на устройства 2.2 и 2.3.5.


person Buzby    schedule 15.06.2012    source источник


Ответы (1)


После небольшого поиска атрибутов, доступных для EditText, я обнаружил, что когда я добавляю android: singleLine = "true", клавиша ENTER перемещает фокус на следующее поле, даже если android: digits ограничивает вводимые символы. Проблема решена! (по крайней мере для меня!)

person Buzby    schedule 09.07.2012
comment
В качестве альтернативы, если пользователь желает иметь вариант «Готово» вместо следующего, см. Этот вопрос, связанный с stackoverflow.com/questions/1919742/ - person CrimsonX; 08.07.2014
comment
android: singleLine deprecated = (есть ли другой способ? - person Rahim Rahimov; 04.05.2017
comment
Я считаю, что теперь вам следует использовать maxLines = 1 - person Buzby; 07.05.2017
comment
но android: maxLines = 1 не работает с android: digits - person Sumit Kumar Saha; 15.09.2017