Не корректно работает "маска ввода" (по слушателю нажатий) в editText
Код и его поведение на скрине. Речь идет конечно не о маске ввода, а о слушателе нажатий. Вопрос - можно ли этот код малыми усилиями переделать так, чтобы точки стирались по backspace по одной , а не только все вместе при выделении?
fun FirstFragment.inputTextWatch() {
currentField.addTextChangedListener(object : TextWatcher {
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {}
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
override fun afterTextChanged(s: Editable) {
when (currentField.text.length) {
2 -> currentField.append(".")
5 -> currentField.append(".")
}
}
})
}
Ответы (1 шт):
Автор решения: Eugene Krivenja
→ Ссылка
Малыми усилиями если что так:
currentField.addTextChangedListener(object : TextWatcher {
var isAdded = true
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {}
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {
isAdded = count < after
}
override fun afterTextChanged(s: Editable) {
if (isAdded) {
when (s.length) {
2 -> s.append(".")
5 -> s.append(".")
}
}
}
})
