2011-01-22 63 views
2

我正在编辑一个带有EditText框的android应用程序。在这个框中,我希望用户输入货币。如何限制EditText框输入小数点后两个字符?

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

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

+0

可能的数字格式被改编成onTextChange观察家可能? – Holly 2011-01-24 16:32:48

回答

2
+0

是的,这就是我的想法。我不得不创建我自己的类来扩展它吗?我不知道如何去写我自己的方法来做这样的事情。不要想你知道任何例子,或者可以向我解释如何开始?由于无论如何 – Holly 2011-01-22 18:25:03

+0

这里有一个例子:http://stackoverflow.com/questions/3349121/how-do-i-use-inputfilter-to-limit-characters-in-an-edittext-in-android 除了你的CharacterSequence会稍微复杂一点。但是EditText的InputFilter的基本实现就在那里。 – 2011-01-22 18:34:07

-1

从后小数点只需要使用下面的代码不进入超过两位数限制用户。

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

数字'3'有窍门。 希望它有帮助!

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; 
    } 
} 
相关问题