自己写了个特别简单可用的金额输入,如果大神有简单方法可以说一下,这个最大支持千万。
moneyEt.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
String strbefore = s.toString();
String strafter = "";
if(strbefore.length() > 0){
int pointstart = strbefore.indexOf(".");
int pointend = strbefore.lastIndexOf(".");
if(pointstart != pointend && pointstart != -1 && pointend != -1){
moneyEt.setText(strbefore.substring(0,strbefore.length() - 1));
//光标移到末尾
Editable etext = moneyEt.getText();
Selection.setSelection(etext, etext.length());
if((pointend - pointstart) != 1){
strafter = strbefore.substring(0,strbefore.length() - 1);
}else {
strafter = strbefore.substring(0,strbefore.length() - 2);
}
}else if(pointstart == 0){
moneyEt.setText("");
}else {
Pattern pattern = Pattern.compile("^(([1-9]\\d{0,9})|0)(\\.\\d{1,2})?$");
Matcher matcher = pattern.matcher(s.toString());
if(!matcher.matches()){
if(!strbefore.substring(strbefore.length() - 1 ,strbefore.length()).equals(".") ){
moneyEt.setText(strbefore.substring(0,strbefore.length() - 1));
//光标移到末尾
Editable etext = moneyEt.getText();
Selection.setSelection(etext, etext.length());
}
strafter = strbefore.substring(0,strbefore.length() - 1);
}else {
strafter = strbefore;
}
}
}
Log.e("金额after","====> " + strafter);
}
});
其中strafter就是金额。