2011-01-22 100 views
2

私はアンドロイドアプリケーションのEditTextボックスで作業しています。このボックスには、ユーザーが通貨を入力する必要があります。EditTextボックス入力を小数点以下2文字に制限するにはどうすればよいですか?

私はすでに便利アンドロイドを使用して数字と小数点にキーボードが制限されている:inputType =「numberDecimalは」が、私は小数点以下の二つ以上の数字を入力することからユーザーを停止できるようにしたいと思います(そのようにコンテンツは通貨として保存され、ユーザーが入力した内容についてユーザーが明確であることが重要だと思うからです)。

しかし、私はプログラミングの経験があまりなく、私はどこから探し始めるべきかわかりません(検証は非常に大きなトピックです)。グーグルのビットと私はInputFilterクラスの独自の拡張子を作成する必要がありますが、私はそれについて行くか、良い方法があるかどうかわからないように聞こえる。だから、どんなアドバイスも本当にありがとう!

+0

を試してみてください? – Holly

答えて

2

はちょうど次のコードを使用し、小数点の後に二つ以上の数字を入力することではないからユーザーを制限するにはInputFilter http://developer.android.com/reference/android/text/InputFilter.html

+0

ええ、それは私が考えていたものです。私はそれを正しく拡張する独自のクラスを作成する必要がありますか?私はこのようなもののために私自身の方法を書いていく方法については分かりません。あなたが何かの事例を知っているとは思わないでください。とにかくありがとう – Holly

+0

ここに例があります:http://stackoverflow.com/questions/3349121/how-do-i-use-inputfilter-to-limit-characters-in-an-edittext-in-android CharacterSequenceは少し複雑です。しかし、EditText用のInputFilterの基本的な実装はすべてそこにあります。 –

-1

を使用してください。

myEditText1 = (EditText) findViewById(R.id.editText1); 
myEditText1.setInputType(3); 

数字「3」がトリックです。 お手伝い願います!

0

は、番号の形式は、多分onTextChangeウォッチャーに適合させることができる。この

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

このロジックは、edittextにすでに10進数がある場合、テキストが追加されないようにします。例1.45は11.45のようなものに新しいテキストを入力することは許されません。 – Matthew

関連する問題