android很多项目都会有输入框,还有输入框的限制,下面给出参考,总结别的文章的 ,
自己做出记录和分享

public class CashierInputFilter implements InputFilter {
Pattern mPattern;

//输入的最大金额/** * java int 类整数的最大值是 2 的 31 次方 - 1 = 2147483648 - 1 = 2147483647 可以用 Integer.MAX_VALUE 表示它,即 int value = Integer.MAX_VALUE; */private static final int MAX_VALUE = Integer.MAX_VALUE;//小数点后的位数private static final int POINTER_LENGTH = 8;private static final String POINTER = ".";private static final String ZERO = "0";public CashierInputFilter() {    /**     * 正则表达式,表示匹配0-9的数字和.     */    mPattern = Pattern.compile("([0-9]|\\.)*");}/** * @param source    新输入的字符串 * @param start     新输入的字符串起始下标,一般为0 * @param end       新输入的字符串终点下标,一般为source长度-1 * @param dest      输入之前文本框内容 * @param dstart    原内容起始坐标,一般为0 * @param dend      原内容终点坐标,一般为dest长度-1 * @return          输入内容 */@Overridepublic CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {    String sourceText = source.toString();    String destText = dest.toString();    //验证删除等按键    if (TextUtils.isEmpty(sourceText)) {        return "";    }    Matcher matcher = mPattern.matcher(source);    //已经输入小数点的情况下,只能输入数字    if(destText.contains(POINTER)) {        if (!matcher.matches()) {            return "";        } else {            if (POINTER.equals(source.toString())) {  //只能输入一个小数点                return "";            }        }        /**         *   验证小数点精度,保证小数点后只能输入{@link POINTER_LENGTH}位         */        int index = destText.indexOf(POINTER);        int length = dend - index;        if (length > POINTER_LENGTH) {            return dest.subSequence(dstart, dend);        }    } else {        /**         * 没有输入小数点的情况下,只能输入小数点和数字         * 1. 首位不能输入小数点         * 2. 如果首位输入0,则接下来只能输入小数点了         */        if (!matcher.matches()) {            return "";        } else {            if ((POINTER.equals(source.toString())) && TextUtils.isEmpty(destText)) {  //首位不能输入小数点                return "";            } else if (!POINTER.equals(source.toString()) && ZERO.equals(destText)) { //如果首位输入0,接下来只能输入小数点                return "";            }        }    }    //验证输入金额的大小    double sumText = Double.parseDouble(destText + sourceText);    /**     * 这里判断最大输入的值     *///        if (sumText > MAX_VALUE) {//            return dest.subSequence(dstart, dend);//        }    return dest.subSequence(dstart, dend) + sourceText;}}

上面就是一个输入的过滤器,下面就是使用方法
editText = (EditText) findViewById(R.id.editText);
设置金额输入的过滤器,保证只能输入金额类型 小数点后几位是自己设置的{@link CashierInputFilter.POINTER_LENGTH}
InputFilter[] filters = {new CashierInputFilter()};
editText.setFilters(filters);
GItHub上面有个demo欢迎下载 LimitEditText

更多相关文章

  1. android 金额输入限制,EditText保留两位小数
  2. Android 保留两位小数点的4种方法
  3. DecimalFormat 实现保留小数点位数及四舍五入
  4. Android 浮点型当小数点后为0时自动去掉
  5. Android 限制EditText输入小数点后面位数
  6. Android EditText保留小数点后两位
  7. c语言float类型小数点后有几位有效数字?
  8. PHP 如何处理金额
  9. 老大说:谁要再用double定义商品金额,就自己收拾东西走

随机推荐

  1. Android 开发之webview页面返回到最顶关
  2. Flash Android P Preview Image into Pix
  3. android多国语言包命名规则
  4. Android重启应用和重启手机
  5. 自定义录像机 没任何新意
  6. Android的dialog控制焦点导致其后Activit
  7. webview高度自适应图文详情
  8. Android 仿360恶意广告拦截扫描
  9. Android Name Rules 命名规则
  10. Android——简单对话框