2016-08-17 251 views
3

我很难在Xamarin Studio中编译我的Android应用程序。在出现的错误如下:找不到与指定名称相匹配的资源attr“colorPrimary”

没有资源发现在给定name属性 “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日在清单
  • 设置taget框架,Android在项目设置5.0
  • 清理和重建项目

错误依然存在:-( 是否需要其他设置才能使其工作?

+1

您是否在您的颜色xml文件中创建了colorPrimary值? –

+3

你试过'android:colorPrimary'吗? –

+1

哈,那个伎俩:-) – Boris

回答

6

这是我的项目工作。

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

不是吗?我指的是我的colors.xml中的颜色 – Boris

+0

编辑如何声明和调用颜色 – Mulflar

+0

这正是我所做的。即使你的第一个建议会产生相同的错误......问题不在于未找到颜色,而在于colorPrimary属性。 – Boris

3

您应该直接从材料设计文档(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项目。因此,它无法找到相应的属性,因为它未在范围中定义。

否则,你将需要从主题

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

删除android:前缀res\values\colors.xml

<color name="colorPrimary">#3F51B5</color> 
<color name="colorPrimaryDark">#303F9F</color> 
<color name="colorAccent">#FF4081</color> 

添加该代码现在同步你的项目。

+0

OP不想简单地硬编码值,他们想要从他们的colors.xml中读取'colorPrimary',并从中派生出另外两种颜色。 – MMAdams

+0

请建议一些通用的方法来解决问题。 –

相关问题