Андроид colorControlNormal xml атрибуты не работают pre-Lollipop
Я пытаюсь изменить цвет строки EditText
внизу, но мой EditText
по-прежнему не хочет менять цвет, но он использует стиль от Material
.
Я попытался изменить цвет, следующий за этим ответом: ссылка
Итак, у меня есть EditText
с формой Material
, но не с цветами, которые я установил.
Я поместил appcompat-v7
в мой конфигурационный файл Gradle
, и он уже работает для основного цвета.
<style name="AppBaseTheme.MiddleTheme.Widget.EditText" parent="Theme.AppCompat.Light">
<item name="colorPrimary">@color/middle_primary</item>
<!-- Those 3 lines are staying in red war in IntelliJ but it does build the project -->
<item name="android:colorControlNormal">@color/middle_sqool_primary</item>
<item name="android:colorControlActivated">@color/middle_sqool_primary</item>
<item name="android:colorControlHighlight">@color/middle_sqool_primary</item>
</style>
Ответы
Ответ 1
Вы должны установить colorControlActivated
, colorControlHighlight
и colorControlNorma
l в своей теме приложения (или теме деятельности) не в стиле edittext.
Что-то вроде этого:
<style name="Theme.App.Base" parent="Theme.AppCompat.Light">
<item name="colorControlNormal">@color/middle_sqool_primary</item>
<item name="colorControlActivated">@color/middle_sqool_primary</item>
<item name="colorControlHighlight">@color/middle_sqool_primary</item>
</style>
Ответ 2
В качестве обходного пути попробуйте использовать android.support.v7.widget.AppCompatEditText
, а не EditText
. Вы всегда должны использовать это для программно созданных представлений.
Довольно уверен, что вы сделали это, но убедитесь, что редактируете темы в папке values
, а не в values-v21
(если есть).
Ответ 3
У меня была аналогичная проблема. Требуется изменить цвет подсветки элементов меню. И ни один из этих атрибутов не работал (Support Library v25.0.0).
Единственным атрибутом, который позволил мне изменить цвет на устройствах Pre-L, является следующее:
<item name="actionBarItemBackground">@drawable/YOUR_DRAWABLE</item>
Я прекратил поиск дальнейших обходных решений, потому что очевидно, что библиотека поддержки НЕ готова к производственному коду.