如何将EditText框输入限制为小数位后的两个字符?

时间:2011-01-22 18:05:41

标签: java android validation input android-edittext

我正在使用EditText框创建一个Android应用程序。在此框中,我希望用户输入货币。

我已经使用方便的 android:inputType =“numberDecimal”将键盘限制为数字和小数,但我希望能够阻止用户在小数点后输入两位数以上放置(以便将内容保存为货币,也只是因为我认为用户清楚他们输入的内容很重要)。

然而,我没有太多的编程经验,我不知道从哪里开始寻找(验证是一个非常大的主题哈哈)。一点谷歌搜索,听起来我应该自己扩展InputFilter类,但我不知道如何去做或如果有更好的方法。所以任何建议都会非常感激!

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

试试这个

editText.setFilters(new InputFilter[] {new DecimalDigitsInputFilter(2)});

DecimalDigitsInputFilter

public class DecimalDigitsInputFilter implements InputFilter {
    Pattern mPattern;
    public DecimalDigitsInputFilter(int digitsAfterZero) {
        mPattern=Pattern.compile("[0-9]+((\\.[0-9]{0," + (digitsAfterZero-1) + "})?)||(\\.)?");
    }
    @Override
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {

        Matcher matcher=mPattern.matcher(dest);       
        if(!matcher.matches())
            return "";
        return null;
    }
}

答案 2 :(得分:-1)

要限制用户在小数点后输入不超过两位数,请使用以下代码。

myEditText1 = (EditText) findViewById(R.id.editText1);  
myEditText1.setInputType(3);

数字'3'可以解决问题。 希望它有所帮助!