Не корректно работает "маска ввода" (по слушателю нажатий) в 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(".")
        }
      }
    }
})
→ Ссылка