web-dev-qa-db-fra.com

Rétrocompatibilité de la conception des matériaux Android: colorAccent nécessite le niveau d'API 21 lors de l'utilisation d'AppCompat7

J'ai un maven Android dans Eclipse et même si j'ai configuré mon projet pour utiliser la bibliothèque de compatibilité, il donne toujours l'erreur suivante dans mon styles.xml:

Android:colorAccent requires API level 21 (current min is 15)    
Android:colorPrimary requires API level 21 (current min is 15)
Android:colorPrimaryDark requires API level 21 (current min is 15)

style.xml

<style name="AppBaseTheme" parent="Theme.AppCompat"></style>
<style name="AppTheme" parent="AppBaseTheme">

    <item name="Android:colorPrimary">@color/primary</item>
    <item name="Android:colorPrimaryDark">@color/primary_dark</item>
    <item name="Android:colorAccent">@color/accent</item>    

</style>

AndroidManifest.xml

package="com.app"
Android:versionCode="1"
Android:versionName="0.0.1-SNAPSHOT" >

<uses-sdk
    Android:minSdkVersion="15"
    Android:targetSdkVersion="21" />
<uses-permission Android:name="Android.permission.INTERNET"/>

<application
    Android:allowBackup="true"
    Android:icon="@drawable/ic_launcher"
    Android:label="@string/app_name"
    Android:theme="@style/AppTheme">
    <activity Android:name="com.app.activity.MainActivity" >
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />

            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

pom.xml

<build>
    <finalName>${project.artifactId}</finalName>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>com.jayway.maven.plugins.Android.generation2</groupId>
                <artifactId>Android-maven-plugin</artifactId>
                <version>${Android.plugin.version}</version>
                <extensions>true</extensions>
            </plugin>
        </plugins>
    </pluginManagement>
    <plugins>
        <plugin>
            <groupId>com.jayway.maven.plugins.Android.generation2</groupId>
            <artifactId>Android-maven-plugin</artifactId>
            <configuration>
                <sdk>
                    <platform>21</platform>
                </sdk>
            </configuration>
        </plugin>

    </plugins>

</build>

Je souhaite que les fonctionnalités de conception matérielle de mes applications prennent en charge la compatibilité descendante. Comment puis-je réparer cela?

27
Mario Dennis
61
androidBegginer

Supprimez le Android préfixe avant le nom de la couleur. Ce sera donc:

<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/accent</item>    
15
Dr. Hasan Hashem

Ces propriétés sont conçues pour fonctionner avec Android 21, Material Material vous ne pouvez donc pas les utiliser dans values/styles.xml. Au lieu de cela, vous devez les mettre dans values-v21/styles.xml.

Si vous souhaitez implémenter Material Design dans les versions précédentes de Android vous devez inclure la bibliothèque de compatibilité:

dependencies {
    compile "com.Android.support:appcompat-v7:21.0.+"
}

puis vous pouvez utiliser:

values/themes.xml:

<style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
    <!-- colorPrimary is used for the default action bar background -->
    <item name=”colorPrimary”>@color/my_awesome_color</item>

    <!-- colorPrimaryDark is used for the status bar -->
    <item name=”colorPrimaryDark”>@color/my_awesome_darker_color</item>

    <!-- colorAccent is used as the default value for colorControlActivated,
         which is used to tint widgets -->
    <item name=”colorAccent”>@color/accent</item>

    <!-- You can also set colorControlNormal, colorControlActivated
         colorControlHighlight, and colorSwitchThumbNormal. -->

</style>

Plus d'informations ici: http://Android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html

14
Kamil Lelonek