限制输入框小数位数和总位数
2020-05-30 本文已影响0人
恋君一生
1、限制输入框小数位数和输入框的总位数
/**
* 限制小数的位数和总的位数
*
* @param et 输入框
* @param decimalNum 小数的位数
* @param totalNum 总位数
*/
public static void decimalNumber(final EditText et, final int decimalNum, final int totalNum) {
InputFilter lengthFilter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
// source:当前输入的字符
// start:输入字符的开始位置
// end:输入字符的结束位置
// dest:当前已显示的内容
// dstart:当前光标开始位置
// dent:当前光标结束位置
Log.i("wu", "start==" + start + "==end==" + end + "==dstart==" + dstart + "==dend" + dend);
if (dest.length() == 0 && source.equals(".")) {
return "0.";
}
String dValue = dest.toString();
if (dValue.length() >= totalNum) {
return "";
}
String[] splitArray = dValue.split("\\.");
if (splitArray.length > 1) {
String dotValue = splitArray[1];
String content = et.getText().toString().trim();
int index = content.indexOf(".");
if (dotValue.length() == decimalNum) {
if (index < dstart) {
return "";
}
}
}
return null;
}
};
et.setFilters(new InputFilter[]{lengthFilter});
}
2、限制输入框小数位数
/**
* 限制输入框小数位数
*
* @param et
* @param decimalNum
*/
public static void decimalNumber(final EditText et, final int decimalNum) {
decimalNumber(et, decimalNum, Integer.MAX_VALUE);
}