找不到与给定名称attr "colorPrimary"匹配的资源

15

我在Xamarin Studio编译我的Android应用程序遇到了困难。出现的错误如下所示:

没有找到与给定名称attr“colorPrimary”匹配的资源

这是指我的styles.xml:

<?xml version="1.0" encoding="UTF-8"?>
<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="@android:style/Theme.Material.Light.DarkActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <!--item name="colorPrimaryDark">@color/colorPrimaryDark</item-->
        <!--item name="colorAccent">@color/colorAccent</item-->
    </style>
</resources>

在网上常见的建议是将SDK版本设置为21或更高版本。但我已经尝试过:

  • 在清单中将minSdkVersion设置为21
  • 在清单中将targetSdkVersion设置为21
  • 在项目设置中将目标框架设置为Android 5.0
  • 清理并重建项目

错误仍然存在:-( 还需要其他设置才能使其工作吗?


1
你在你的颜色XML文件中创建了colorPrimary值吗? - Luca Ziegler
4
你尝试过使用 android:colorPrimary 吗? - K Neeraj Lal
1
哈,成功了 :-) - Boris
请分享解决方案 ^_^ - Mulflar
当然,看我的回答 :) - K Neeraj Lal
7个回答

14

这是适用于我的项目的解决方案。

res/values-v21/styles.xml 中,

<?xml version="1.0" encoding="UTF-8"?>
<resources>
    <style name="AppTheme" parent="@android:style/Theme.Material.Light.DarkActionBar">
    <item name="android:colorPrimary">@color/primaryColor</item>
    </style>
</resources>

res/values/styles.xml 中,

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/primaryColor</item>
    </style>
</resources>

7

您应该直接遵循来自Material Design文档的约定(https://developer.android.com/training/material/theme.html#ColorPalette):

<resources>
  <!-- inherit from the material theme -->
  <style name="AppTheme" parent="android:Theme.Material">
    <!-- Main theme colors -->
    <!--   your app branding color for the app bar -->
    <item name="android:colorPrimary">@color/primary</item>
    <!--   darker variant for the status bar and contextual app bars -->
    <item name="android:colorPrimaryDark">@color/primary_dark</item>
    <!--   theme UI controls like checkboxes and text fields -->
    <item name="android:colorAccent">@color/accent</item>
  </style>
</resources>

你在这里遗漏了android:命名空间前缀,应该将它添加到colorPrimary项中。否则,由于没有在范围内定义该属性,无法找到相应的属性。

另外,你可以从主题中删除android:前缀。

parent="@android:style/Theme.Material.Light.DarkActionBar"

2
在我的情况下,styles.xml 中使用的颜色未被定义。因此,请确保您已正确定义所有颜色及名称。

0
在我的情况下,是由于我使用的外部合作伙伴SDK中存在错误条目:
  • 他们在SDK value.xml文件中有样式信息
  • 他们在AndroidManifest.xml中也有一个android:theme部分

这两个显然在构建SDK时不必要(而不是应用程序,在那里您需要关于主题和颜色的配置...)


0

人们面临的主要问题是因为他们在定义颜色之前忘记了添加 android 另外, 在你的 colors xml 中不存在所定义的颜色

<item name="android:colorPrimary">#fff</item> <item name="android:colorPrimaryDark">#fff</item> <item name="android:colorAccent">#fff</item>

在这里,我直接定义了颜色,如果你使用像 @color/color_primary 这样的代码,那么所提到的 color_primary 必须存在于你的颜色文件中。


-2

你正在做的是声明你的样式的colorPrimary是你的样式的colorPrimary...这没有意义。

你应该声明哪种颜色:

<style name="_AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
   <item name="colorPrimary">#6c0e54</item>

如果您想定义其他颜色并在样式中调用它,请创建一个类似以下的 XML 文件:
<?xml version="1.0" encoding="utf-8"?>
   <resources>
     <color name="apptheme_color1">#9D3F86</color>
     <color name="apptheme_color2">#84226C</color>
  </resources>

然后你可以这样做:

 <style name="_AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
   <item name="colorPrimary">@color/apptheme_color1</item>

不行吗?我是指我的colors.xml文件中的一种颜色。 - Boris
如何声明和调用颜色的编辑 - Mulflar
这正是我所做的。即使您的第一个建议产生了相同的错误...问题不在于找不到颜色,而在于属性colorPrimary。 - Boris
尝试使用parent="Theme.Material.Light.DarkActionBar"代替parent="@android:style/Theme.Material.Light.DarkActionBar" - Mulflar

-3
将以下代码添加到res\values\colors.xml中。
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>

现在同步您的项目。


1
OP 不想简单地硬编码数值,他们想要从他们的 colors.xml 文件中读取 colorPrimary,并从中派生出另外两种颜色。 - MMAdams
请提供一些通用的解决问题的方法。 - Vikas Yadav

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接