Android - TextInputLayout подсказывает цвет в состоянии ошибки - PullRequest
0 голосов
/ 29 августа 2018

Как заметил автор вопроса THIS , Google показал, что подсказка TextInputLayout должна быть того же цвета, что и сообщение об ошибке. И я сделал это:

class CustomTextInputLayout(context: Context, attrs: AttributeSet) : TextInputLayout(context, attrs) {

override fun setError(error: CharSequence?) {
    super.setError(error)

    resetBackground()
}

override fun setErrorEnabled(enabled: Boolean) {
    super.setErrorEnabled(enabled)

    resetBackground()

    changeHintColor(enabled)
}

override fun drawableStateChanged() {
    super.drawableStateChanged()

    resetBackground()
}

private fun resetBackground() {
    editText?.apply {
        val drawable = ContextCompat.getDrawable(context, R.drawable.selector_edit_text_background)
        background = drawable
        background.colorFilter = DrawableCompat.getColorFilter(drawable ?: ColorDrawable(Color.WHITE))
    }
}

private fun changeHintColor(error: Boolean) {
    setHintTextAppearance(
        if (error) {
            R.style.TextInputLayoutHintErrorStyle
        } else {
            R.style.TextInputLayoutHintNormalStyle
        }
    )
}
}

Теперь это работает как шарм, но есть еще одна вещь, которую я хочу сделать и не могу достичь. Когда я перемещаю фокус из моего TextInputLayout EditText в состоянии ошибки, цвет подсказки снова становится обычным цветом. Когда я возвращаю фокус к этому TextInputLayout, EditText цвет подсказки превращается в цвет ошибки.

Как сделать так, чтобы цвет подсказки всегда оставался неизменным, если TextInputLayout в состоянии ошибки? Неважно, есть фокус или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...