编辑文本只接受数字而非android中的十进制数字

时间:2014-02-12 10:25:09

标签: java android regex

我的编辑文字只能接受3位数字,而不能接受任何其他十进制数字。我使用下面的正则表达式来做到这一点,但这甚至接受像“。”这样的字符。和“ - ”。那么如何避免接受小数值?

        pattern=Pattern.compile("[0-9]{0,2}");

即使我将编辑文本设置为

        android:digits="0123456789"
        android:inputType="number"  

这不起作用。怎么解决?

7 个答案:

答案 0 :(得分:14)

试试这个:

android:inputType="number|none"
android:maxLength="3"
android:digits="0123456789"

答案 1 :(得分:1)

在xml的edittext中设置这些...

android:inputType="numberDecimal"
android:maxLength="3"

答案 2 :(得分:0)

将此设置为EditText

android:inputType:"number"
android:maxLength:"3"

答案 3 :(得分:0)

我想你应该使用TextWacher class

以编程方式进行
editText.addTextChangedListener(new TextWatcher()
{
    Handler handler = new Handler();
    Runnable delayedAction = null;

    @Override
    public void onTextChanged( CharSequence s, int start, int before, int count)
    {}

    @Override
    public void beforeTextChanged( CharSequence s, int start, int count, int after)
    {}

    @Override
    public void afterTextChanged( final Editable s)
    {}
});

答案 4 :(得分:0)

尝试将它放在EditText xml声明中:

android:inputType="number|none"

享受编码:)

答案 5 :(得分:0)

您可以使用this answer来解决问题。还限制了您可以使用的位数:

android:maxLength="3"

正如其他用户对您的回答。

祝你好运

答案 6 :(得分:0)

如果输入不接受小数,则事件。就我而言,如果我将文本设置为以编程方式输入,则结果将为十进制(末尾添加.0)。因此,为解决此问题,我在设置文本时将其替换。

double myValue = 25000;
myInput.setText(String.valueOf(myValue).replace(".0", ""));