これらのような浮動小数点数のみをテキストフィールドに有効な浮動小数点数のみを許可する方法
2.353 -2.354 4444.45
フィールドにフォーカス リスナーを実装します。フォーカスがテキストフィールドからフォームの他の部分に変わったら、単純に正規表現を使用して入力の有効性を確認してください。
何かのようなもの :
^(-)?\d*(\.\d*)?$
トリックを行う必要があります。
次に、Android のパターン マッチングを使用して、入力が regexp と一致するかどうかを確認します。
Pattern p = Pattern.compile("^(-)?\d*(\.\d*)?$");
Matcher m = p.matcher(inputString);
if (m.find()) {
////Found
}
else {
//Not found
}
ただし、ローカル設定に注意してください...たとえば、フランスでは、小数点を区切るために使用されるドット (.) は、実際にはコンマ (,) です。
これを実現するには、 OnFocusChangeListenerを使用します。
//value pool
final String[] check = new String[]{"2.353","-2.354","4444.45"};
yourEditText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
String s = ((EditText)v).getText().toString().trim();
for(String tmp : check){
if(!TextUtils.isEmpty(s) && s.equals(tmp)){
//it ok
break;
}
else{
//do something
}
}
}
});
android:inputType="numberDecimal|numberSigned"
編集テキスト用android:inputType="number"
結果の文字列を整数に変換します (例: Integer.parseInt(myEditText.getText().toString())`)。