Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Changing Material Components style attributes fails

I am trying to change the style attributes from the Material Components Theme (like colorPrimaryVariant, colorOnSecondary and so on) but I get the following error:

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.

This is what my theme looks like:

<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>

If I don't add the four affected attributes everything works fine. My minSdkVersion is 16, compileSdkVersion and targetSdkVersion are 28. I also tried to use the Bridge themes but I get the same error. I double-checked my dependencies and everything seems correct. What am I missing?

like image 269
Makru Avatar asked Oct 04 '18 20:10

Makru


2 Answers

It looks like 1.1.0 (currently in alpha) has resolved this issue:

implementation 'com.google.android.material:material:1.1.0-alpha09'
like image 159
and_dev Avatar answered Nov 19 '22 00:11

and_dev


I have just checked the documentation and the items you used. It seems like it is still not added to the Theme.MaterialComponents nor it doesn't work with that theme.

(got the Not found error (by using Theme.MaterialComponents) too)

The interesting part is, I believe it should work with parent="Theme.AppCompat" since they said it is for the test to see how it works:

You can also incrementally test new Material components without changing your app theme. This allows you to keep your existing layouts looking and behaving the same, while introducing new components to your layout one at a time.

Read: AppCompat Themes

like image 2
ʍѳђઽ૯ท Avatar answered Nov 19 '22 00:11

ʍѳђઽ૯ท