В поле EditText
пользователь должен вводить только допустимые числа, поэтому я использую android:inputType="numberDecimal"
. К сожалению, мягкая клавиатура, которую Android поднимает, имеет номера только вдоль верхней строки, в то время как в следующих трех строках есть различные другие символы (знак доллара, знак процента, восклицательный знак, пробел и т.д.). Поскольку numberDecimal
принимает только цифры 0-9, отрицательный знак и десятичную точку, было бы разумнее использовать "телефонную" мягкую клавиатуру (0-9 в сетке 3x3, а также некоторые другие символы). Это сделало бы кнопки большими и легкими для удара (поскольку это сетка 4x4, а не сетка 10x4 в той же области экрана). К сожалению, использование android:inputType="phone"
позволяет использовать нечисловые символы, например круглые скобки
Я попытался использовать android:inputType="numberDecimal|phone"
, но аспект numberDecimal
битового флага, кажется, игнорируется. Я также попытался использовать android:inputType="phone"
в комбинации с android:digits="0123456789-."
, но это все еще допускает множественные отрицательные знаки или десятичные точки (inputType="number"
имеет действительно хорошую проверку ошибок для подобных вещей и не позволит пользователю даже ввести его в). Я также попытался использовать android:inputType="phone"
в файле макета xml, используя DigitsKeyListener
в java-коде, но затем он просто использует стандартную цифровую клавиатуру (ту, которая имеет номера только по верхней строке) (она выглядит set InputType.TYPE_CLASS_NUMBER
, который помещает InputType.TYPE_CLASS_PHONE
, установленный в макете xml).
Написание пользовательского IME не будет работать, так как пользователю придется выбирать IME как глобальную опцию вне приложения.
Можно ли использовать мягкую клавиатуру стиля "телефон", а также использовать ограничения "числа" для введенного?