Я прочитал Android: Ограничение EditText числами и Как показать цифровую клавиатуру в EditText в Android? . К сожалению, ни один из них мне не подходит.
Я хочу ограничить ввод EditText только числами. Однако я также хочу разрешить знаковый и / или десятичный ввод.
Вот мой текущий код (мне нужно сделать это программно):
EditText edit = new EditText(this);
edit.setHorizontallyScrolling(true);
edit.setInputType(InputType.TYPE_CLASS_NUMBER);
С этим мой EditText весело ограничивает весь ввод числовыми цифрами. К сожалению, он не позволяет ничего другого, например десятичной точки.
Если я изменю эту строку на edit.setInputType (InputType.TYPE_NUMBER_FLAG_DECIMAL)
, EditText будет принимать все вводимые данные (а это не то, что Я хочу ...).
Я пробовал комбинировать флаги (в отчаянии, чтобы увидеть, сработает ли это):
edit.setInputType(InputType.TYPE_CLASS_NUMBER);
edit.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL)
edit.setInputType(InputType.TYPE_NUMBER_FLAG_SIGNED)
Это тоже не сработало (EditText принял все вводимые данные как обычно).
Итак , как мне это сделать?
используйте setRawInputType и setKeyListener
editTextNumberPicker.setRawInputType(InputType.TYPE_CLASS_NUMBER |
InputType.TYPE_NUMBER_FLAG_DECIMAL|InputType.TYPE_NUMBER_FLAG_SIGNED );
editTextNumberPicker.setKeyListener(DigitsKeyListener.getInstance(false,true));//set decimals and positive numbers.