Не найден ресурс, соответствующий данному имени 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>
теперь синхронизируйте свой проект.