问题描述:
当edittext当中需要输入小数点的时候,进行计算的话会有一些列问题出现,例如:格式不对、小数点位置不对、小数点后输入0的问题
问题解决方法:
1)在输入框添加一个监听事件,会有3个方法重写
第一个:onTextChanged (也是最重要的一个,一般操作都是在这个方法中编写)
//添加监听的edittext为gongzi
//当你直接输入小数点的时候会自动加一个0.在前面
if (gognzi.getText().toString().indexOf(".") == 0) {
gognzi.setText("0" + gognzi.getText().toString());
gognzi.setSelection(gognzi.getText().toString().length());
//判断你的文字是否有效
} else if (gognzi.getText().toString().indexOf("0") == 0 && gognzi.getText().toString().length() > 1 && gognzi.getText().toString().substring(1).indexOf(".") != 0) {
gognzi.setText(gognzi.getText().toString().substring(1));
gognzi.setSelection(gognzi.getText().toString().length());
//下面这个判断是 判断你.后面能输入几个小数(2个)
} else {
String[] text = arg0.toString().split("\\.", 2);
if (text[0].length() > 11) {
text[0] = text[0].substring(0, 11);
}
if (text.length > 1 && text[1].length() > 2) {
text[1] = text[1].substring(0, 2);
}
String value = text[0];
if (text.length > 1) {
value += "." + text[1];
}
if (!value.equals(gognzi.getText().toString())) {
gognzi.setText(value);
Editable etext = gognzi.getText();
Selection.setSelection(etext, etext.length());
}
}
2)第二个 afterTextChanged:
在这里面 的操作是:
String text = s.toString();
int len = s.toString().length();
if (len == 1 && text.equals("0")) {
s.clear();
}
清空
3)第三个方法不用管
以上的方法就能轻松判断你输入框的 内容并不会报错