Android EditText限制输入两位小数

一、概述

发现输出产品价格的时候不能简单的设置android:inputType为number或者numberDecimal,因为这样不能输入小数或者小数位能够输入多个,这样不符合实际生活需求,所以只能限制输入两位。

二、实现

主要是借助addTextChangedListener进行监听输入文本框的内容,声明一个textWatcher来执行监听,

前提是设置文本输入类型为:  android:inputType="numberDecimal"

 ....

 txt_productPrice.addTextChangedListener(textWatcher);

 ....

private TextWatcher textWatcher = new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void afterTextChanged(Editable editable) {
            String editStr = editable.toString().trim();

            int posDot = editStr.indexOf(".");
            //不允许输入3位小数,超过三位就删掉
            if (posDot < 0) {
                return;
            }
            if (editStr.length() - posDot - 1 > 2) {
                editable.delete(posDot + 3, posDot + 4);
            } else {
                //TODO...这里写逻辑
            }
        }
    };

一般存储和使用时候借助

DecimalFormat df = new DecimalFormat("0.00");
df.format(doubleData)

 

参考文章

你可能感兴趣的:(Android基础)