2016-11-13 72 views
0

我是新開發的Android開發人員,並且遇到了一些問題,試圖將數字限制在4位數後。限期後的數字EditText Android

我創建的EditText:

<EditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:inputType="numberDecimal|numberSigned" 
     android:ems="10" 
     android:id="@+id/myEdit" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentEnd="true" /> 

而且它只允許一個點和數字什麼的正是我想要的。但我也需要它在這段時間後最多隻允許4位數字。我究竟可以做到這一點?

+1

實施TextWatcher並圍繞輸入。 –

+0

我讀過它了。你能組織它作爲答案嗎?謝謝 –

+0

重複的鏈接包含多個有效的答案。 –

回答

0

首先創建一個類。

public class DecimalDigitsInputFilter implements InputFilter { 

     Pattern mPattern; 

     public DecimalDigitsInputFilter(int digitsBeforeZero,int digitsAfterZero) { 
      mPattern=Pattern.compile("[0-9]{0," + (digitsBeforeZero-1) + "}+((\\.[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; 
      } 

     } 
onCreate方法

然後設置一個新的過濾器就像您的編輯文字是這樣的:

EditText myEdit = (EditText)findViewById(R.id.myEdit); 
myEdit.setFilters(new InputFilter[] {new DecimalDigitsInputFilter(5,1)}); 

就是這樣。你已經解決了你的問題。 :)

+0

我會試試看。謝謝 –