方法比较简单,监听输入的数值是否大于或小于指定的值即可,如果大于了,就给edit设置上最大的值,如果小于了就给edit设置最小的值
注意要在xml中指定inputType,不然字符串转int或者double的时候会出现异常
/** edittext只能输入数值的时候做最大最小的限制 */ public static void setRegion(final EditText edit, final double MIN_MARK, final double MAX_MARK) { edit.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if (start > 1) { if (MIN_MARK != -1 && MAX_MARK != -1) { double num = Double.parseDouble(s.toString()); if (num > MAX_MARK) { s = String.valueOf(MAX_MARK); edit.setText(s); } else if (num < MIN_MARK) { s = String.valueOf(MIN_MARK); edit.setText(s); } edit.setSelection(s.length()); } } } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { if (s != null && !s.equals("")) { if (MIN_MARK != -1 && MAX_MARK != -1) { double markVal = 0; try { markVal = Double.parseDouble(s.toString()); } catch (NumberFormatException e) { markVal = 0; } if (markVal > MAX_MARK) { edit.setText(String.valueOf(MAX_MARK)); edit.setSelection(String.valueOf(MAX_MARK).length()); } return; } } } }); }