我有一个关于edittext中的极限数的问题。我想用户只能输入1-70之间的数字。当用户想输入70.01或更多时,我不允许输入。只允许输入两位小数。总长度为5个字符(包括点)。
我可以限制小数点前后。&也限制70,但用户可以输入70.99(不知道为什么)在编辑文本,我想阻止。当用户输入71或更多时,我的验证工作
这是我在片段中使用的构造函数
txtno.setFilters(new InputFilter[] {new DecimalDigitsInputFilter(Integer.parseInt(getString(R.string.length)),2,txtno)});
这是小数点后和小数点前
@Override
public CharSequence filter(CharSequence source, int start, int end,Spanned dest, int dstart, int dend) {
mTextView.setKeyListener(DigitsKeyListener.getInstance(true,true));
String etText = mTextView.getText().toString();
String temp = mTextView.getText() + source.toString();
if (temp.equals(".")) {
return "0.";
} else if (temp.toString().indexOf(".") == -1) {
// no decimal point placed yet
if (temp.length() > mMyint) {
return "";
}
} else {
int dotPosition;
int cursorPositon = mTextView.getSelectionStart();
if (etText.indexOf(".") == -1) {
dotPosition = temp.indexOf(".");
} else {
dotPosition = etText.indexOf(".");
}
if (cursorPositon <= dotPosition) {
String beforeDot = etText.substring(0, dotPosition);
if (beforeDot.length() < mMyint) {
return source;
} else {
if (source.toString().equalsIgnoreCase(".")) {
return source;
} else {
return "";
}
}
} else {
temp = temp.substring(temp.indexOf(".") + 1);
if (temp.length() > mMydec) {
return "";
}
}
}
return null;
}
&这是限制70的文本观察程序
public void afterTextChanged(Editable s) {
try{
if(Integer.parseInt(s.toString())>70){
s.replace(0, s.length(), s.toString());
}
}catch(Exception e){}
提前谢谢。
最佳答案
问题是您试图解析int-您需要解析double。
关于android - 用十进制限制android中的编辑文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27124065/