input-mask (красный сумасшедший робот) автоматически удалять пробелы - PullRequest
0 голосов
/ 18 декабря 2018

Я хочу создать маску для маски кредитной карты для текста редактирования в формате, подобном [0000] [0000] [0000] [0000], но пользователь не должен удалять пробелы вручную

Например:

"4444_4444_4"

"444_4444 _"

Как реализовать автоматическое удаление пробелов ""?

https://github.com/RedMadRobot/input-mask-android

1 Ответ

0 голосов
/ 18 декабря 2018

Попробуй это.Надеюсь, это поможет.(Пример Котлина)

class CreditCardFormattingTextWatcher : TextWatcher {

    private var etCard: EditText? = null
    private var isDelete: Boolean = false


    constructor(etcard: EditText) {
        this.etCard = etcard
    }

    override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}

    override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
        isDelete = before != 0
    }

    override fun afterTextChanged(s: Editable) {
        val source = s.toString()
        val length = source.length

        val stringBuilder = StringBuilder()
        stringBuilder.append(source)

        if (length > 0 && length % 5 == 0) {
            if (isDelete)
                stringBuilder.deleteCharAt(length - 1)
            else
                stringBuilder.insert(length - 1, " ")
            etCard?.setText(stringBuilder)
            etCard?.setSelection(etCard?.text?.length ?: 0)

        }

    }


}
...