25

我正在尝试从Material Components Theme更改样式属性(例如colorPrimaryVariantcolorOnSecondary等等),但出现以下错误:

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 主题,但我得到了同样的错误。我仔细检查了我的依赖项,一切似乎都是正确的。我错过了什么?

4

2 回答 2

39

看起来1.1.0(目前处于 alpha 阶段)已经解决了这个问题:

implementation 'com.google.android.material:material:1.1.0-alpha09'
于 2018-11-11T10:02:34.550 回答
2

我刚刚检查了文档和您使用的项目。似乎它仍未添加到该Theme.MaterialComponents主题中,也不适用于该主题。

(也得到了 Not found 错误(通过使用Theme.MaterialComponents))

有趣的部分是,我相信它应该可以工作,parent="Theme.AppCompat"因为他们说这是为了测试来看看它是如何工作的:

您还可以在不更改应用主题的情况下逐步测试新的 Material 组件。这使您可以保持现有布局的外观和行为相同,同时一次向布局中引入一个新组件。

阅读: AppCompat 主题

于 2018-10-04T20:54:45.480 回答