Не найден ресурс, соответствующий данному имени attr " colorPrimary"

Мне трудно компилировать приложение для Android в Xamarin Studio. Возникает следующая ошибка:

не найден ресурс, соответствующий заданному имени attr "colorPrimary"

что относится к моим стилям.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 в manifest
  • установить targetSdkVersion до 21 в манифесте
  • установите taget framework на Android 5.0 в настройках проекта
  • очищенный и перестроенный проект

ошибка все еще существует :-( Существуют ли другие настройки, необходимые для этой работы?

5 ответов


это то, что сработало для моего проекта.

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

вы должны следовать конвенцией сразу от материальной конструкции documentation(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"

в моем случае, цвета, используемые в стилях.xml, где не определено. Итак, убедитесь, что вы правильно определили все цвета, а также имена.


то, что вы делаете, это объявить, что 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>

добавьте этот код в res\values\colors.xml

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

теперь синхронизируйте свой проект.