Мне бы хотелось, чтобы у моего редактируемого текста был нормальный фон без красного цвета, когда счетчик превышает его максимальную длину. И я хотел бы изменить цвет текста на красный, когда он превышает.
Теперь это выглядит так:
Я хочу, чтобы это выглядело так
Я пытался использовать это решение здесь , но когда счетчик превышает метод, setError(error: CharSequence?)
не вызывался, и невозможно переопределить метод updateCounter(length: Int)
, чтобы вручную установить ошибку самостоятельно.
class NoChangingBackgroundTextInputLayout : TextInputLayout {
private val backgroundDefaultColorFilter: ColorFilter?
get() {
var defaultColorFilter: ColorFilter? = null
if (editText != null && editText!!.background != null)
defaultColorFilter = DrawableCompat.getColorFilter(editText!!.background)
return defaultColorFilter
}
constructor(context: Context) : super(context) {}
constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {}
constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {}
override fun setError(error: CharSequence?) {
val defaultColorFilter = backgroundDefaultColorFilter
super.setError(error)
//Reset EditText's background color to default.
updateBackgroundColorFilter(defaultColorFilter)
}
override fun drawableStateChanged() {
val defaultColorFilter = backgroundDefaultColorFilter
super.drawableStateChanged()
//Reset EditText's background color to default.
updateBackgroundColorFilter(defaultColorFilter)
}
private fun updateBackgroundColorFilter(colorFilter: ColorFilter?) {
if (editText != null && editText!!.background != null)
editText!!.background.colorFilter = colorFilter
}
}
Мой XML-макет выглядит следующим образом:
<NoChangingBackgroundTextInputLayout
android:id="@+id/textInputLayout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
app:counterEnabled="true"
app:counterMaxLength="250"
app:counterTextAppearance="@style/CounterTextViewStyle"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView18">
<android.support.design.widget.TextInputEditText
style="@style/MyEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="top|left" android:inputType="textMultiLine|textCapSentences"
android:maxLines="10"
android:minLines="8"
android:paddingTop="6dp"
android:paddingBottom="6dp"
android:scrollbars="vertical"
android:textSize="16sp"
tools:text="adfsg sdg asg asd asgd asdgasdgc asgasdgasd gasd gasd sdagsadgag asg"/>
</NoChangingBackgroundTextInputLayout>
Как изменить текст редактируемого текста на красный, чтобы фон оставался прежним?