一:要实现这个效果也不是很复杂,只需要设置输入框输入的字符类型、设置InputFilter、设置输入变化监听即可。下面直接来看代码吧….

二:new 一个class extends AppCompatEditText并写上一个初始化函数

private void init() {    //设置输入框允许输入的类型(正则)    //对应的布局属性是--->android:digits="0123456789."    setKeyListener(DigitsKeyListener.getInstance("0123456789."));    //设置输入字符    setFilters(new InputFilter[]{inputFilter});    addTextChangedListener(this);}

三:inputFilter来分割小数后的保留位数

private InputFilter inputFilter = new InputFilter() {    @Override    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {        // 删除等特殊字符,直接返回        if (TextUtils.isEmpty(source)) {            return null;        }        String dValue = dest.toString();        String[] splitArray = dValue.split("\\.");        if (splitArray.length > 1) {            String dotValue = splitArray[1];            // 2 表示输入框的小数位数            int diff = dotValue.length() + 1 - 2;            if (diff > 0) {                return source.subSequence(start, end - diff);            }        }        return null;    }};

如果你想保留其它位数的小数,只需要把上面的2改成你需要的位数即可。

三:输入框输入变化的监听,来处理小数点不能出现在第一位&&不能出现多个

@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {    //如果输入框为空则不处理    if (TextUtils.isEmpty(s)) {        return;    }    //第一个字符不为小数点    if (s.length() == 1 && s.toString().equals(".")) {        setText("");        return;    }    int counter = counter(s.toString(), '.');    if (counter > 1) {        //小数点第一次出现的位置        int index = s.toString().indexOf('.');        setText(s.subSequence(0, index + 1));    }    setSelection(getText().toString().length());}

四:统计一个字符在字符串中出现的次数

/** * 统计一个字符在字符串中出现的次数 * * @param s 字符串 * @param c 字符 * @return 數量 */public int counter(String s, char c) {    int count = 0;    for (int i = 0; i < s.length(); i++) {        if (s.charAt(i) == c) {            count++;        }    }    return count;}

就这几步就可以轻松实现了,想看源码的点击这里哦源码链接

更多相关文章

  1. Android(安卓)Studio下Ndk开发踩过的坑以及解办法决
  2. Android(安卓)控件之TextView常见使用问题
  3. Android和IOS等效MD5加密
  4. android EditText限制输入长度
  5. Android资源文件中特殊字符未转义引起的编译错误
  6. Android应用接入第三方登录之新浪登录
  7. android 与服务器用 http Post方法通迅
  8. Android判断字符串中是否含字母、中文或数字
  9. Android(安卓)金钱计算BigDecimal 的使用

随机推荐

  1. Android Check GPS is Enabled or Not
  2. android中的上下文菜单
  3. Android调用WebView
  4. android shell
  5. android:parentActivityName
  6. Android:New Google Maps Android API no
  7. android 中Spinner与dialog的综合应用
  8. Android 内存剖析 – 发现潜在问题
  9. android 4.0 com.android.ddmlib.Install
  10. android AsyncTask 使用方法