package com.mdd.manager.utils;
import android.annotation.SuppressLint;
import android.text.TextUtils;
import android.widget.EditText;
/**
* Discribe:控制EditText输入金额的长度, 工具类
* 整数只能输入多少位,
* 带小数点输入的总长度
*/
public class EditTextUtil {
/*** 小数点后的位数 */
private static final int POINTER_LENGTH = 2;
private static final String POINTER = ".";
private static final String ZERO = "0";
// private static int integerDigits = 7; // 整数最大只能输入7位数
private static int integerDigits; // 整数最大只能输入的位数
private static String number; //输入的值
private static int curSelection; //当前输入的值
/***
* 保留两位小数
* @param editText
* @param length 整数数字长度
*/
@SuppressLint("SetTextI18n")
public static void keepTwoDecimals(EditText editText, int intNum, int length) {
integerDigits = intNum;
number = editText.getText().toString();
//第一位不能输入小点
if (number.length() == 1 && TextUtils.equals(number.substring(0, 1), POINTER)) {
editText.setText("");
return;
}
//第一位0时,后续不能输入其他数字
if (number.length() > 1 && TextUtils.equals(number.substring(0, 1), ZERO) &&
!TextUtils.equals(number.substring(1, 2), POINTER)) {
editText.setText(number.substring(0, 1));
editText.setSelection(editText.length());
return;
}
String[] numbers = number.split("\\.");
//已经输入小数点的情况下
if (numbers.length == 2) {
//小数处理
int decimalsLength = numbers[1].length();
if (decimalsLength > POINTER_LENGTH) {
curSelection = editText.getSelectionEnd();
editText.setText(number.substring(0, numbers[0].length() + 1 + POINTER_LENGTH));
editText.setSelection(curSelection > number.length() ?
number.length() :
curSelection);
}
//整数处理
if (numbers[0].length() > length) {
curSelection = editText.getSelectionEnd();
editText.setText(number.substring(0, integerDigits) + number.substring(integerDigits + 1));
editText.setSelection(curSelection > integerDigits ?
integerDigits :
curSelection);
}
} else {
//整数处理
if (editText.length() > integerDigits) {
if (number.contains(POINTER)) return;
curSelection = editText.getSelectionEnd();
if (curSelection > integerDigits){ //判断当前的值 curSelection > 7 时 则只能说输入7位整数
editText.setText(number.substring(0, integerDigits));
editText.setSelection(curSelection > integerDigits ?
integerDigits :
curSelection);
}
}
}
}
}