Я хочу динамически изменить boxBackgroundColor
TextInputLayout, когда editText.setEnables(false)
.Я пытался сделать это через res / color / selector_input_background_color, но это не сработало.Также TextInputLayout
(android.support.design.widget.TextInputLayout
) не имеет такого параметра как boxBackgroundColor
!; (- это ТОЛЬКО предустановка в библиотеке AndroidX (com.google.android.material.textfield.TextInputLayout
), к которой я боюсь перейти прямо сейчас. (Старый проект)
вот как выглядит мой макет
<android.support.design.widget.TextInputLayout
[...]
android:theme="@style/TextInputLayoutTheme"
style="@style/TextInputLayoutStyle">
<android.support.design.widget.TextInputEditText
[...]
/>
</android.support.design.widget.TextInputLayout>
TIL наследует стили от нового MaterialDesign
<style name="TextInputLayoutStyle" parent="Widget.MaterialComponents.TextInputLayout.FilledBox.Dense">
<item name="boxBackgroundColor">@color/selector_input_background_color</item>
</style>
И в зависимости от состояния я предоставлял селектор внутри res / color
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:color="#00FF00"/>
<item android:color="@color/editTextBackground"/>
</selector>
Боюсь, что это ошибка, потому что Google обещаетсохранить совместимость с версией библиотеки поддержки 28.0.0 и AndroidX. Что забавно, даже если TextInputLayout не имеет метода, такого как .setBoxBackgroundColor
, он работает внутри стиля - но селектор не имеет.
Я подозреваю, что из-за этого пробела, даже если у меня есть селектор boxBackgroundColor, он не вызывается при изменении EditText state:enabled
, потому что TextInputLayout не знает этот параметр - однако он каким-то волшебным образом используется в начале, когда загружается макет.