1.创建一个类继承 InputFilter 字符串过滤器
public class MyEditTextMinMax implements InputFilter {
private float min,max;
private int dot_num;
public MyEditTextMinMax(float min, float max,int dot_num) {
this.min = min;
this.max = max;
this.dot_num = dot_num;
}
public MyEditTextMinMax(String min, String max) {
this.min = Integer.parseInt(min);
this.max = Integer.parseInt(max);
}
/**
* @param source 输入的文字
* @param start 输入-0,删除-0
* @param end 输入-文字的长度,删除-0
* @param dest 原先显示的内容
* @param dstart 输入-原光标位置,删除-光标删除结束位置
* @param dend 输入-原光标位置,删除-光标删除开始位置
* @return
*/
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
try {
if (dot_num==0&&source.toString().equals(".")){
return "";
}
//限制不能重复出现.
if (dest.toString().contains(".") && source.toString().equals(".")) {
return "";
}
// //有负数的
// if (plus_minus == 1) {
// if (source.equals(“-”) && start == 0) {
// return “-”;
// }
// }
// //不让首位置出现00 这种情况
if (source.equals(“0”) && start == 0 && dest.toString().equals(“0”)) {
return “”;
}
//限制小数点位数
if (dest.toString().contains(“.”)) {
int index = dest.toString().indexOf(“.”);
int mlength = dest.toString().substring(index).length();
if (mlength == dot_num + 1) {
return “”;
}
}
String replacement = source.subSequence(start, end).toString();
String newVal = dest.toString().substring(0, dstart) + replacement +dest.toString().substring(dend, dest.toString().length());
float input = Float.parseFloat(newVal);
// int input = Integer.parseInt(dest.toString() + source.toString());
if (input<=max){
System.out.println("input = " + input + " source ==" + source + " start=====" + start + " end======" + end + " dest====" + dest + " dstart===" + dstart + " dend==" + dend);
return null;
}
} catch (Exception e) {
} return "";
}
private boolean isInRange(int a, int b, int c) {
return b > a ? c >= a && c <= b : c >= b && c <= a;
}
}
2.editText 设置过滤器
editText.setFilters(new InputFilter[]{new MyEditTextMinMax(3, 12,1)});
3.设置监听
editText.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
String val = v.getText().toString();
if (Float.valueOf(val) < 3) {
editText.setText(3 + “”);
}
return false;
}
});