Android-错误状态下的TextInputLayout提示颜色

时间:2018-08-29 05:58:44

标签: android styles android-textinputlayout hint

正如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的{​​{1}}时,提示色再次变为常规色。当我将焦点移回此EditText的{​​{1}}时,提示颜色变为错误颜色。

如果TextInputLayout处于错误状态,如何使提示颜色始终保持不变?不管有没有焦点。

0 个答案:

没有答案