Android EditText 限制输入小数位数

首先提到一个输入过滤器,用来约束用户输入的内容关键接口:InputFilters
我们现在要做的就是重写这个接口

/**
 * Created by jary on 2016/11/3.
 *  设置小数位数控制
 */
public class PointLengthFilter implements InputFilter {

/** 输入框小数的位数  示例保留一位小数*/
private static final int DECIMAL_DIGITS = 1;

public CharSequence filter(CharSequence source, int start, int end,
                           Spanned dest, int dstart, int dend) {
    // 删除等特殊字符,直接返回
    if ("".equals(source.toString())) {
        return null;
    }
    String dValue = dest.toString();
    String[] splitArray = dValue.split("\\.");
    if (splitArray.length > 1) {
        String dotValue = splitArray[1];
        int diff = dotValue.length() + 1 - DECIMAL_DIGITS;
        if (diff > 0) {
            return source.subSequence(start, end - diff);
        }
    }
    return null;
}
}

调用示例

xml 代码
<EditText
    android:id="@+id/et_text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="numberDecimal"   //记得限制输入类型为小数
    />
java代码
  etText= (EditText) findViewById(R.id.et_accounting_money);
  etText.setFilters(new InputFilter[]{new Lengthfilter()});
    原文作者:jarylan
    原文地址: https://www.jianshu.com/p/fa57576b5479
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞