EditText с проверкой и заменой editable.replace, проблема при очистки поля
(Android, Коtlin) Помогите люди умные, пытаюсь в EditText (тип ввода numberDecimal) на лету проверять вводимые данные используя textWatcher. Мне нужно при вводе вполе 0745 получить 0.745 Это срабатывает, но после ввода, в поле не получается полностью очистить поле, так как начинает работать условие и подставлять ноль с точкой. (0.) остается в поле.
blok1.addTextChangedListener(textWatcher())
private fun textWatcher(): TextWatcher {
return object :
TextWatcher {
override fun afterTextChanged(editable: Editable) {
try {
val none = Integer.parseInt(editable.toString())
if (none == 0) {
editable.replace(0, editable.length, "0.")
}
} catch (e: NumberFormatException) {
e.printStackTrace()
}
}
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
}
}
}
Ответы (1 шт):
Автор решения: Drawn Raccoon
→ Ссылка
override fun afterTextChanged(editable: Editable) {
// добавляет точку, если первый введённый символ 0, а следующий не является точкой
if (editable.length > 1 && editable[0] == '0' && editable[1] != '.') {
editable.insert(1, ".")
}
}
