Как мне ограничить ввод EditText числовым (возможно, десятичным и подписанным) вводом?

Я прочитал 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 принял все вводимые данные как обычно).

Итак , как мне это сделать?

51
задан Community 23 May 2017 в 01:47
поделиться

1 ответ

используйте 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. 
0
ответ дан 7 November 2019 в 09:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: