2011-01-22 184 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; 
    } 
} 
相關問題