Изменение атрибутов стиля компонентов материала завершается неудачно
Я пытаюсь изменить атрибуты стиля из темы компонентов материалов (например, colorPrimaryVariant
, colorOnSecondary
и так далее) но я получаю следующую ошибку:
Android resource linking failed
Output: C:\...\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:3835: error: style attribute 'attr/colorPrimaryVariant (aka com.sample.app:attr/colorPrimaryVariant)' not found.
C:\...\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:3836: error: style attribute 'attr/colorOnPrimary (aka com.sample.app:attr/colorOnPrimary)' not found.
C:\...\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:3839: error: style attribute 'attr/colorSecondaryVariant (aka com.sample.app:attr/colorSecondaryVariant)' not found.
C:\...\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:3840: error: style attribute 'attr/colorOnSecondary (aka com.sample.app:attr/colorOnSecondary)' not found.
error: failed linking references.
Вот как выглядит моя тема:
<resources>
<!-- Light application theme -->
<style name="CBTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
<item name="colorPrimary">@color/cbPrimary</item>
<item name="colorPrimaryDark">@color/cbPrimaryDark</item>
<item name="colorPrimaryVariant">@color/cbPrimaryDark</item>
<item name="colorOnPrimary">#FFFFFF</item>
<item name="colorAccent">@color/cbAccent</item>
<item name="colorSecondary">@color/cbAccent</item>
<item name="colorSecondaryVariant">@color/cbAccentLight</item>
<item name="colorOnSecondary">#FFFFFF</item>
<item name="colorError">@color/cbRed</item>
<item name="android:windowBackground">@color/lightThemeBackground1</item>
</style>
[...]
</resources>
Если я не добавлю четыре затронутых атрибута, все будет хорошо. Мой minSdkVersion - 16, compileSdkVersion и targetSdkVersion - 28. Я также пытался использовать темы Bridge, но получаю ту же ошибку. Я дважды проверил свои зависимости, и все кажется правильным. Что мне не хватает?
3 ответа
Похоже, что 1.1.0-alpha01 решил эту проблему:
implementation 'com.google.android.material:material:1.1.0-alpha01'
Я только что проверил документацию и предметы, которые вы использовали. Кажется, что он до сих пор не добавлен в Theme.MaterialComponents
и это не работает с этой темой.
(получил ошибку Не найден (с помощью Theme.MaterialComponents
) тоже)
Интересная часть, я считаю, что это должно работать с parent="Theme.AppCompat"
так как они сказали, что для теста, чтобы увидеть, как это работает:
Вы также можете постепенно тестировать новые компоненты Material без изменения темы приложения. Это позволяет вам сохранять существующие макеты в одинаковом стиле и вести себя одинаково, добавляя новые компоненты в макет по одному.
Читайте: AppCompat Темы
colorSurface используется для «листов» материала (таких как карты и нижние листы).
Вам не нужно переопределять все цвета. Некоторые из них, такие как colorSurface, используют нейтральные цвета, поэтому полагаться на значения по умолчанию совершенно нормально.
Ресурс: https://material.io/blog/android-material-theme-color