I built a decimal mask for the editing text, which will automatically change the editing text to the number of decimal places needed. In bass mode, you listen to text changes and loss of focus.
private void formatNumber() { sNumberToFormat = etNumberToFormat.getText().toString(); sDecimalMask = etDecimalMask.getText().toString(); boolean periodMask = false; String delimiter = getDelimiter(); String[] decimalMask = getsDecimalMask(); if (decimalMask.length == 1) { return; } else { if (delimiter.equalsIgnoreCase(",")) { //decimal format only currently works with dot delimiters. sDecimalMask = sDecimalMask.replace(",", "."); } DecimalFormat df = new DecimalFormat(sDecimalMask); df.setRoundingMode(RoundingMode.UP); sNumberToFormat = df.format(Float.valueOf(sNumberToFormat.replace(",", "."))); //if (maxNumber > Float.valueOf(sNumberToFormat)) { if (delimiter.equalsIgnoreCase(",")) { sNumberToFormat = sNumberToFormat.replace(".", ","); } etNumberToFormat.setText(sNumberToFormat); } }
Full demo here .
Kristy welsh
source share