Android EditText 输入金额保留小数点后2位
开发中经常会遇到要让用户输入金额的情况,并且还可能有些其它的要求,比如小数点后不能多于2位,最大金额不能超过某个值等等,一开始遇到这种需求时会觉得这个似乎挺简单的,但写代码的时候却发现要写好也不容易,索性写了个工具,以后要用到的时候就直接用了。
多的不说了,直接上代码:
/**
* 输入金额时的文本过虑器,可设置最大输入金额、小数点后位数
*
* @author Huangming 2018/8/15
*/
public class MoneyInputFilter implements InputFilter {
/** 正则表达式:以0或正整数开头后跟0或1个(小数点后面跟0到2位数字) */
private static final String FORMAT = "^(0|[1-9]\\d*)(\\.\\d{0,%s})?$";
/** 正则表达式:0-9.之外的字符 */
private static final Pattern SOURCE_PATTERN = Pattern.compile("[^0-9.]");
/** 默认保留小数点后2位 */
private Pattern mPattern = Pattern.compile(String.format(FORMAT, "2"));
/** 允许输入的最大金额 */
private double maxValue = Integer.MAX_VALUE;
/**
* 设置保留小数点后的位数,默认保留2位
*
* @param length
*/
public void setDecimalLength(int length) {
mPattern = Pattern.compile(String.format(FORMAT, length));
}
/**
* 设置允许输入的最大金额
*
* @pa