首先提到一个输入过滤器,用来约束用户输入的内容关键接口: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()});