如何仅允许将有效的浮点数放入文本字段中的浮点数
2.353 -2.354 4444.45
在该字段上实现一个焦点侦听器。当焦点从文本字段更改到表单的任何其他部分时,只需使用正则表达式来检查输入的有效性。
就像是 :
^(-)?\d*(\.\d*)?$
应该做的伎俩。
然后使用 Android 的模式匹配来查看输入是否与 regexp 匹配:
Pattern p = Pattern.compile("^(-)?\d*(\.\d*)?$");
Matcher m = p.matcher(inputString);
if (m.find()) {
////Found
}
else {
//Not found
}
但请注意本地设置...例如在法国,用于分隔小数的点 (.) 实际上是逗号 (,)
使用OnFocusChangeListener来实现这一点。
//value pool
final String[] check = new String[]{"2.353","-2.354","4444.45"};
yourEditText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
String s = ((EditText)v).getText().toString().trim();
for(String tmp : check){
if(!TextUtils.isEmpty(s) && s.equals(tmp)){
//it ok
break;
}
else{
//do something
}
}
}
});
对于edittext使用android:inputType="number"
将结果字符串转换为整数(例如,Integer.parseInt(myEditText.getText().toString())`)。
android:inputType="numberDecimal|numberSigned"