您的位置:首页 > 其它

EditText限制输入内容为1-100范围内的数字

2018-03-16 17:06 811 查看
首先在布局文件中,设置inputType为number,且maxLength=3;然后设置监听输入,代码如下

public TextWatcher inputWatch(final EditText input) {
return new TextWatcher() {

private String outStr = ""; //这个值存储输入超过两位数时候显示的内容

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
String edit=s.toString();
if (edit.length()==2&&Integer.parseInt(edit)>=10){
outStr=edit;
}
}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
String words = s.toString();
//首先内容进行非空判断,空内容(""和null)不处理
if (!TextUtils.isEmpty(words)) {
//1-100的正则验证
Pattern p = Pattern.compile("^(100|[1-9]\\d|\\d)$");
Matcher m = p.matcher(words);
if (m.find() || ("").equals(words)) {
//这个时候输入的是合法范围内的值
} else {
if (words.length() > 2) {
//若输入不合规,且长度超过2位,继续输入只显示之前存储的outStr
input.setText(outStr);
//重置输入框内容后默认光标位置会回到索引0的地方,要改变光标位置
input.setSelection(2);
}
ToastUtil.showToast("请输入范围在1-100之间的整数");
}
}
}

@Override
public void afterTextChanged(Editable s) {
//这里的处理是不让输入0开头的值
String words = s.toString();
//首先内容进行非空判断,空内容(""和null)不处理
if (!TextUtils.isEmpty(words)) {
if (Integer.parseInt(s.toString()) <= 0) {
input.setText("");
ToastUtil.showToast("请输入范围在1-100之间的整数");
}
}
}
};
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: