Страницы

Поиск по вопросам

пятница, 5 июля 2019 г.

Формат ввода текста в EditText по аналогии с таймером в стандартном приложении “Часы”

Нужно сделать ввод десятичной дроби следующим образом: в самом начале в поле ввода отображается 0.000, при вводе цифр получается следующее ввели "3" -> 0.003 ввели "1" -> 0.031 ввели "6" -> 0.316 ввели "9" -> 3.169 ввели "0" - > 31.690 и т.д. Да, можно свой велосипед, но хотелось бы найти красивое решение. Даже гуглить не знаю как.


Ответ

Попробуйте это: edittext.addTextChangedListener(new NumberTextWatcher());
class NumberTextWatcher implements TextWatcher {
boolean mEditing;
public NumberTextWatcher() { mEditing = false; }
public synchronized void afterTextChanged(Editable s) { if (!mEditing) { mEditing = true; // Strip symbols String digits = s.toString().replaceAll("\\D", ""); NumberFormat nf = NumberFormat.getNumberInstance(); nf.setMinimumFractionDigits(3); try { String formatted = nf.format(Double.parseDouble(digits) / 1000); s.replace(0, s.length(), formatted); } catch (NumberFormatException nfe) { s.clear(); } mEditing = false; } }
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
public void onTextChanged(CharSequence s, int start, int before, int count) { } }

Комментариев нет:

Отправить комментарий