Skip to content

Поменять цвет маски #53

Open
Sash0k opened this issue Aug 25, 2020 · 1 comment
Open

Поменять цвет маски #53

Sash0k opened this issue Aug 25, 2020 · 1 comment

Comments

@Sash0k
Copy link

Sash0k commented Aug 25, 2020

Добрый вечер, не нашёл в текущей версии такой возможности.
При включенном отображении маски она выводится тем же цветом, что и вводимое значение.
Было бы удобно отображать её цветом хинта, либо добавить возможность настраивать свой цвет.

sample

@m4xp1
Copy link

m4xp1 commented Jul 11, 2021

У меня получилось решить эту задачу следующим образом:

editText.addTextChangedListener(afterTextChanged = { text ->
  // For keep cursor position see this answer: https://stackoverflow.com/a/68339818/3094065
  invalidateMaskColor(text)
})

private fun invalidateMaskColor(text: Editable?) {
  if (text == null) return

  text.getSpans(0, text.length, ForegroundColorSpan::class.java)
    .forEach { span -> text.removeSpan(span) }

  val mask = formatWatcher?.mask ?: return
  if (text.toString() == mask.toString()) {
    val color = placeholderTextColor
      ?.getColorForState(editText?.drawableState, Color.TRANSPARENT) ?: Color.TRANSPARENT
    val span = ForegroundColorSpan(color)

    text.setSpan(span, mask.initialInputPosition, text.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
  }
}

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants