decoro icon indicating copy to clipboard operation
decoro copied to clipboard

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

Open Sash0k opened this issue 4 years ago • 1 comments

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

sample

Sash0k avatar Aug 25 '20 18:08 Sash0k

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

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)
  }
}

m4xp1 avatar Jul 11 '21 22:07 m4xp1