原理很简单监听editText输入,判断小数点前的位数和小数点后面的位数,超过则删除输入的字符,下面直接贴出代码。

/** * @Description:EditText内容输入限制最大:小数点前五位,小数点后2位 * @author: jiawen.gu * @CreateDate: 2017/11/6 */public class EditTextJudgeNumberWatcher implements TextWatcher {    private EditText editText;    public EditTextJudgeNumberWatcher(EditText editText) {        this.editText = editText;    }    @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) {        judgeNumber(editable,editText);    }    /**     * 金额输入框中的内容限制(最大:小数点前五位,小数点后2位)     *     * @param edt     */    public static void judgeNumber(Editable edt,EditText editText) {        String temp = edt.toString();        int posDot = temp.indexOf(".");//返回指定字符在此字符串中第一次出现处的索引        int index = editText.getSelectionStart();//获取光标位置        //  if (posDot == 0) {//必须先输入数字后才能输入小数点            //  edt.delete(0, temp.length());//删除所有字符            //  return;        //  }        if (posDot < 0) {//不包含小数点            if (temp.length() <= 5) {                return;//小于五位数直接返回            } else {                edt.delete(index-1, index);//删除光标前的字符                return;            }        }        if (posDot > 5) {//小数点前大于5位数就删除光标前一位            edt.delete(index-1, index);//删除光标前的字符            return;        }        if (temp.length() - posDot - 1 > 2)//如果包含小数点        {            edt.delete(index-1, index);//删除光标前的字符            return;        }    }}

下面是使用方法:

EditText editText= (EditText) findViewById(R.id.editText);editText.addTextChangedListener(new EditTextJudgeNumberWatcher(editText));

代码很简单,注释也很清楚,希望对你有用!

更多相关文章

  1. [Android]四种方式解析字符串----JSON、SAX、DOM、XML
  2. Android中如何获取字符或者字符串的宽度
  3. android存储本地数据大全
  4. Android开发经验之获取画在画布上的字符串长度、宽度(所占像素宽
  5. android Java BASE64编码和解码一:基础
  6. Android中TextSwitcher的功能与用法
  7. Android/JAVA 针对时间戳转今天昨天前天,以及刚刚,几分钟的显示
  8. Android(安卓)OpenGL相关
  9. android之客户端从服务端解析数据及上传与反馈数据

随机推荐

  1. android 优秀源码
  2. Android几种常见的多渠道(批量)打包方式
  3. Android中的广播机制(一)----- 接收广播
  4. 高德地图Android错误码1008、32和7;错误提
  5. 最近对招聘Android开发人员的一些思考
  6. android 蓝牙BLE 开发
  7. 雕刻机蓝牙android上位机控制器设计
  8. android基础部分再学习--AIDL
  9. Android百度地图开发之开发第一个小应用,
  10. Android开发之ListView页眉页脚效果VS an