Страницы

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

суббота, 11 апреля 2020 г.

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

#java #android #input #android_edittext

                    
Нужно сделать ввод десятичной дроби следующим образом:
в самом начале в поле ввода отображается 0.000, при вводе цифр получается следующее 

ввели "3" -> 0.003     
ввели "1" -> 0.031  
ввели "6" -> 0.316  
ввели "9" -> 3.169  
ввели "0" - > 31.690 и т.д.

Да, можно свой велосипед, но хотелось бы найти красивое решение. Даже гуглить не
знаю как.    


Ответы

Ответ 1



Попробуйте это: 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) { } }

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

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