How can I limit the EditText box input to two char

2019-07-24 19:56发布

i'm working on an android application with an EditText box. In this box i want the user to enter currency.

I have already restricted the keyboard to numbers and decimals using the handy android:inputType="numberDecimal" but i would like to be able to stop the user from entering more than two digits after the decimal place (so that the content is saved as a currency and also just because i think it's important that the user is clear about what they're entering).

However i don't have much programming experience and i don't know where to start looking (validation is a pretty huge topic haha). A bit of googling and it sounds like i should make my own extension of the InputFilter class but i'm not sure how to go about that or if there's a better way. So Any advice would really be appreciated!

3条回答
We Are One
2楼-- · 2019-07-24 20:14

Try this

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;
    }
}
查看更多
Animai°情兽
4楼-- · 2019-07-24 20:37

To limit the user from not entering more than two digits after decimal point just use the following code.

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

The number '3' does the trick. Hope it helps!

查看更多
登录 后发表回答