Я скопировал код из stackoverflow, используя InputFilter, чтобы заставить текст редактирования иметь 3 цифры перед "." и 2 цифры после (2 десятичных знака). Тем не менее, я хочу, чтобы система отображала 15,00, если пользователь вводит только 15?
Итак, сценарий, который я хочу, состоит в том, чтобы ... редактировать текст должен иметь не более 2 десятичных знаков, например 12,56, но если пользователь вводит только 15, редактируйте текстовое поле. добавляет 2 нуля в конце, так что 15 -> 15.00
Как мне это сделать в addTextChangedListener?
Код из stackoverflow относительно inputfilter
public class DecimalDigitsInputFilter implements InputFilter {
Pattern mPattern;
public DecimalDigitsInputFilter(int digitsBeforeZero,int digitsAfterZero) {
mPattern=Pattern.compile("[0-9]{0," + (digitsBeforeZero-1) + "}+((\\.[0-9]{0," + (digitsAfterZero-1) + "})?)||(\\.)?");
}
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
String s = Html.toHtml(dest).replaceAll("\\<.*?>","").replaceAll("\n","");
Matcher matcher = mPattern.matcher(dest);
if (!matcher.matches())
return "";
try {
if(Double.parseDouble(s)<9999.99 && s.contains(".")) {
return null;
}else if ((Double.parseDouble(s)<1000 && !s.contains("."))||source.equals(".")) {
return null;
}else {
return "";
}
}catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
/// in main activity
numberReceivedEditText.setFilters(new InputFilter[]{new DecimalDigitsInputFilter(3, 2)});
numberReceivedEditText.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) {
}
});