TextInputLayout - setError не меняет цвет плавающей подсказки на цвет ошибки
У меня проблема с состоянием ошибки TextInputLayout. Когда я устанавливаю ошибку в TextInputLayout, сообщение об ошибке выделяется красным цветом вместе с подчеркиванием, но подсказка этого не делает (цвет по умолчанию остается серым). Я поэкспериментировал с настройкой errorTextAppearance, но, похоже, не могу получить текст подсказки для изменения цвета.
<android.support.design.widget.TextInputLayout
android:id="@+id/textInputLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="My Hint"
app:errorTextAppearance="@style/MyErrorTextAppearance">
<android.support.design.widget.TextInputEditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:maxLength="10"
android:maxLines="1" />
styles.xml
<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="MyErrorTextAppearance" parent="TextAppearance.Design.Error">
<item name="android:textColor">@color/colorError</item>
</style>
Я установил и убрал ошибку следующим образом:
myTextInputLayout.setErrorEnabled(true);
myTextInputLayout.setError(errorMessage);
myTextInputLayout.setError(null);
myTextInputLayout.setErrorEnabled(false);
0 ответов
Попробуйте следующий код:
fun setHintColor(@ColorInt color: Int)
{
try {
var stateList = ColorStateList(arrayOf(intArrayOf(0)), intArrayOf(color))
val defaultTextColorField = TextInputLayout::class.java.getDeclaredField("mDefaultTextColor")
defaultTextColorField?.let {field->
field.isAccessible = true
field.set(this, stateList)
}
val focusedTextColorField = TextInputLayout::class.java.getDeclaredField("mFocusedTextColor")
focusedTextColorField?.let{field->
field.isAccessible = true
field.set(this, stateList)
}
}catch(e: java.lang.Exception){
// handle exception
}
}