2016-05-05 6 views
1

小数点以下2桁を許可するEditTextを10進数にする必要があります(オプション)。可能な値は:私は非常に多くの試したdecimal input filter android

xxxxの

xxxx.x

XX.XX

.xx

.X

XX

S/Oで見つかったソリューションと私は私のソリューションを満たすために適切な正規表現を見つけました。しかし、私の要求を満たすものはありません。一部のソリューションは要件を満たしていますが、小数点の前に編集することはできません。 edittextの値が.xxの場合、小数点(。)の前には編集できないとします。

誰でも適切な解決策を指摘できます。

N.B .: EditTextでmaxLengthプロパティを使用します。

+0

編集するには?すべての小数を一致させる? –

+0

あなたはo/pとして何が必要ですか? –

+0

解決策を見つけることができますか?私は同じ問題を抱えています。私は小数点の前に新しい文字を追加することはできません... – atasoyh

答えて

1

これを試してみてください、

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


    } 

と設定したフィルタは、正規表現を行うことになっているどのようなテキスト

editText.setFilters(new InputFilter[] { new DecimalDigitsInputFilter(10, 2) }); 
+1

私もこれを使用しました。これは私の要求を満たしていますが、小数点(。)より前の変更は許可していません –

+0

正確に何をしたいですか? –

+1

解を使って、Edittextに0.33の値を入れ、小数点(。)の前に何かを加えてみてください。私はそれが起こらないと確信しています。 –