package com.dollearn.student.utils;
|
|
import android.text.InputFilter;
|
import android.text.Spanned;
|
import android.text.TextUtils;
|
|
import java.util.regex.Matcher;
|
import java.util.regex.Pattern;
|
|
/**
|
* author:Created by ZHT on 2017/12/25 10:38
|
* email:526309416@qq.com
|
* desc:输入大小限制(整数 /首位不能输入0)
|
*/
|
public class IntegerInputFilter implements InputFilter {
|
private Pattern mPattern;
|
//输入的最大金额
|
private static double MAX_VALUE = Integer.MAX_VALUE;
|
|
public IntegerInputFilter(int maxValue) {
|
MAX_VALUE = maxValue;
|
mPattern = Pattern.compile("([0-9])*");
|
}
|
|
/**
|
* @param source 新输入的字符串
|
* @param start 新输入的字符串起始下标,一般为0
|
* @param end 新输入的字符串终点下标,一般为source长度-1
|
* @param dest 输入之前文本框内容
|
* @param dstart 原内容起始坐标,一般为0
|
* @param dend 原内容终点坐标,一般为dest长度-1
|
* @return 输入内容
|
*/
|
|
@Override
|
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
|
String sourceText = source.toString();
|
String destText = dest.toString().trim();
|
//验证删除等按键
|
if (TextUtils.isEmpty(sourceText)) {
|
return "";
|
}
|
|
Matcher matcher = mPattern.matcher(source);
|
if (!matcher.matches()) {
|
return "";
|
}
|
if (destText.length() == 0 && sourceText.equals("0")) {
|
return "";
|
}
|
//验证输入金额的大小
|
double sumText = Double.parseDouble(destText + sourceText);
|
|
if (MAX_VALUE > 0 && sumText > MAX_VALUE) {
|
return dest.subSequence(dstart, dend);
|
}
|
return dest.subSequence(dstart, dend) + sourceText;
|
}
|
}
|