2016-11-13 7 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" /> 

をそして、それはまさに私が欲しいものだものだけを1つのドットと数字を可能にします。しかし、私はそれが期間の後に最大4桁だけを許可する必要があります。どのように私はこれを達成することができますか?

+1

TextWatcherを実装し、入力を丸めます。 –

+0

私はそれについて読んだことがあります。それを答えとして整理できますか?ありがとうございます –

+0

重複するリンクには複数の有効な回答が含まれています。 –

答えて

0

最初にクラスを作成します。

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

それだ:

あなた onCreate方法から次に
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; 
      } 

     } 

は、このようなあなたのエディットテキストのような新しいフィルタを設定します。あなたはあなたの問題を解決しました。 :)

+0

私はそれを試してみましょう。ありがとうございました –

関連する問題