EditBox
ユーザーが数字を入力できるようにするものがあります。しかし、私の質問は、ユーザーが小数点の前に3桁以下、小数点の後に1桁以下の数字を入力するように制限するにはどうすればよいですか?例:、、22.1
しかし333.3
、34
ユーザーが入力しようとすると、入力6666.777
が許可されません。
これを解決するのを手伝ってください。可能であれば例を挙げて
EditBox
ユーザーが数字を入力できるようにするものがあります。しかし、私の質問は、ユーザーが小数点の前に3桁以下、小数点の後に1桁以下の数字を入力するように制限するにはどうすればよいですか?例:、、22.1
しかし333.3
、34
ユーザーが入力しようとすると、入力6666.777
が許可されません。
これを解決するのを手伝ってください。可能であれば例を挙げて
InputFilter
ユーザーを制限するために使用します。ここに別のそのようなトピックがあります。AndroidEditTextの小数点以下の桁数を制限する
自分で変更します。私はこれを自分で使用しました。
private class DecimalDigitsInputFilter implements InputFilter
{
Pattern mPattern;
public DecimalDigitsInputFilter(int digitsBeforeZero, int digitsAfterZero)
{
mPattern = Pattern.compile("[0-9]{0,3}\\.[0-9]{0,1}||[0-9]{1,3}");
}
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;
}
}
次に、フィルターを設定します
youEditText.setFilters(new InputFilter[] {new DecimalDigitsInputFilter(3,1)});
private boolean decimalValidation(String str,int decimalDigitCount){
int positionFromLeft=INT_MAX;
try {
if (str.contains(".")) {
positionFromLeft = str.length() - str.indexOf(".") - 1;
}else positionFromLeft = 0;
} catch (Exception e) {
e.printStackTrace();
}
return positionFromLeft <= decimalDigitCount;
}
Note: str has to be number in string format.