2012-04-23 67 views
0

其實我有一個EditBox,其中我允許用戶輸入數字。但我的問題是如何限制用戶在小數點之前輸入不多於三位數字,小數點後不多於一位數字例如:22.1,333.3,34 ..但如果用戶嘗試輸入6666.777則不會允許他們進入。如何限制用戶在編輯框中輸入

請幫我解決這個問題。如果可能舉例

回答

2

使用InputFilter來限制用戶。這是另一個這樣的話題。 Limit Decimal Places in Android EditText

修改爲您自己。我用這個爲我自己。

private class DecimalDigitsInputFilter implements InputFilter 
{ 

    Pattern mPattern; 

    public DecimalDigitsInputFilter(int digitsBeforeZero, int digitsAfterZero) 
    { 
     mPattern = Pattern.compile("[0-9]{0,3}\\.[0-9]{0,1}||[0-9]{1,3}"); 
    } 

    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; 
    } 

} 

現在設置過濾器

youEditText.setFilters(new InputFilter[] {new DecimalDigitsInputFilter(3,1)}); 
+0

是否可以使用正則表達式做......但什麼將是我的條件,模式 – AndroidDev 2012-04-23 10:11:00

+0

是。可能。 :)。編輯我的答案。 – Shaiful 2012-04-23 10:11:30

+0

嘿Shaiful ..你的代碼工作,但333後,它不會讓我進入。我想要的是讓用戶在小數點前輸入三位數字,在小數點後輸入一位數字。在我們的代碼中,只有當小數點前有2位數字時,才允許我在小數點後輸入數字..但是我的要求是,如果小數點前的數字不超過3位,它總是允許用戶在小數點後輸入一位數字。更多有史以來它不允許用戶輸入以零開頭的數字,如0.1,0,.1等。 – AndroidDev 2012-04-23 10:30:28