50 votes

n'a pas réussi à trouver le style "cardView Style" dans le thème actuel

Après la mise à jour de la version de la bibliothèque de support 27.1.0 Android Studio Impossible de rendre CardView. Le message d'erreur suivant apparaît

failed to find style 'cardView Style' in current theme

Mais pas d'erreur de compilation et pas de différence sur le téléphone.

J'ai rétabli la version de la bibliothèque de support à 27.0.2 et le rendu est bon.

Le problème avec la bibliothèque de soutien ou Studio Android ? Comment résoudre ce problème ?

Niveau App Gradle :

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'realm-android'
apply plugin: 'kotlin-kapt'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.tmmmt.tmmmt"
        minSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            buildConfigField 'String', 'FS_CLIENT_ID', FOURSQUARE_CLIENT_ID
            buildConfigField 'String', 'FS_CLIENT_SECRET', FOURSQUARE_CLIENT_SECRET
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            minifyEnabled false
            buildConfigField 'String', 'FS_CLIENT_ID', FOURSQUARE_CLIENT_ID
            buildConfigField 'String', 'FS_CLIENT_SECRET', FOURSQUARE_CLIENT_SECRET
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    flavorDimensions "default"

    productFlavors {
        dev {
            dimension "default"
            versionNameSuffix "-dev"
            buildConfigField 'String', 'BASE_URL', BASE_URL_DEV
            manifestPlaceholders = [GEO_API_KEY: GOOGLE_MAP_KEY_DEV]
        }

        beta {
            dimension "default"
            versionNameSuffix "-beta"
            buildConfigField 'String', 'BASE_URL', BASE_URL_BETA
            manifestPlaceholders = [GEO_API_KEY: GOOGLE_MAP_KEY_BETA]
        }

        live {
            dimension "default"
            buildConfigField 'String', 'BASE_URL', BASE_URL_LIVE

            manifestPlaceholders = [GEO_API_KEY: GOOGLE_MAP_KEY_LIVE]
        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    implementation "org.jetbrains.anko:anko-common:$anko_version"
    implementation "com.android.support:appcompat-v7:$support_version"
    implementation "com.android.support:support-v13:$support_version"
    implementation "com.android.support:design:$support_version"
    implementation "com.android.support:cardview-v7:$support_version"
    implementation "com.google.firebase:firebase-messaging:$play_version"
    implementation "com.google.android.gms:play-services-maps:$play_version"
    implementation "com.google.android.gms:play-services-location:$play_version"
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.squareup.retrofit2:retrofit:2.3.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
    implementation 'com.squareup.okhttp3:logging-interceptor:3.8.0'
    implementation 'com.squareup.okhttp3:okhttp:3.8.1'
    implementation 'com.squareup.picasso:picasso:2.5.2'
    implementation 'com.google.code.gson:gson:2.8.0'
    implementation 'com.wang.avi:library:2.1.3'
    implementation 'com.tmmmt.library:arrowtab:1.3'
    implementation 'com.github.stfalcon:chatkit:0.2.2'
    implementation 'com.amazonaws:aws-android-sdk-core:2.6.16'
    implementation 'com.amazonaws:aws-android-sdk-cognito:2.6.16'
    implementation 'com.amazonaws:aws-android-sdk-s3:2.6.16'
    implementation 'com.orhanobut:logger:2.1.1'
    implementation 'com.tmmmt.library:animations:0.6'
    implementation 'com.github.bumptech.glide:glide:4.6.1'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.6.1'
    compile('io.socket:socket.io-client:1.0.0') {
        exclude group: 'org.json', module: 'json'
    }
    /*Fort*/
    implementation project(':FortSDKv1.4.1')
    implementation 'com.victor:lib:1.0.1'
    implementation 'com.shamanland:fonticon:0.1.8'
    implementation('com.nispok:snackbar:2.11.0') {
        exclude group: 'com.google.android', module: 'support-v4'
    }
    implementation 'com.google.guava:guava:23.0-android'
    implementation 'org.bouncycastle:bcprov-jdk16:1.46'
    implementation 'commons-codec:commons-codec:1.10'
    /*Fort*/
}

apply plugin: 'com.google.gms.google-services'

Gradle au niveau du projet :

buildscript {
    ext.kotlin_version = '1.2.30'
    ext.anko_version = '0.10.1'
    ext.support_version = '27.1.0'
    ext.play_version = '11.8.0'
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "io.realm:realm-gradle-plugin:4.3.2"
        classpath 'com.google.gms:google-services:3.1.0'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven {
            url "https://mymavenrepo.com/repo/eDGOo6Dqr4f6uNA0HoWX/"
            credentials {
                username = 'myMavenRepo'
                password = 'tmmmt123'
            }
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Mise à jour :

Il n'y a pas d'erreur de ce type de la part de Android Studio 3.2 . L'erreur a complètement disparu.

0 votes

Affichez votre fichier gradle

0 votes

Fichier Gradle mis à jour @AbhinavGupta

0 votes

Pour moi, la solution a été de supprimer le cache de Gradle et de reconstruire le projet. Le problème se situait manifestement dans le processus de liaison de Gradle avec les données mises en cache.

92voto

lelloman Points 1088

Vérification de la source de CardView on peut voir que le constructeur

public CardView(@NonNull Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);
    initialize(context, attrs, 0);
}

a été modifié en

public CardView(@NonNull Context context, @Nullable AttributeSet attrs) {
    this(context, attrs, R.attr.cardViewStyle);
}

Et le nouvel attribut cardViewStyle est défini dans la bibliothèque. Je suppose que la version préliminaire d'Android Studio n'inclut pas la valeur de cet attribut de la bibliothèque, pour une raison quelconque. Je ne sais pas s'il résout habituellement les attributs personnalisés définis dans les bibliothèques et qu'il s'agit d'un bogue, ou si c'est voulu.

Solution 1

Résolvez l'attribut dans votre thème (peut-être seulement dans la version de débogage), de cette façon l'erreur disparaît. @style/CardView est déjà défini dans la bibliothèque de support. Il n'est donc pas nécessaire de créer le style, il suffit d'y faire référence.

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="cardViewStyle">@style/CardView</item>
</style>

Veillez à utiliser AppTheme dans la prévisualisation de la mise en page et la construction propre.

Solution 2

Ajouter le style avec tools afin que cela n'affecte pas votre code de production. L'erreur de rendu sera enregistrée, mais vous verrez l'icône CardView Quoi qu'il en soit

<android.support.v7.widget.CardView
    tools:style="@style/CardView"
    ...

Bonnes nouvelles

Android Studio 3.1 semble gérer cela correctement, aucune solution n'est nécessaire (l'erreur dans la prévisualisation de la mise en page est cependant toujours enregistrée).

Sur Android Studio 3.2 (actuellement dans le canal Canary), l'erreur a disparu.

4 votes

Je suis arrivé ici après avoir mis à jour Android studio 3.1, donc pour moi ce n'est pas corrigé.

0 votes

@Odys ok maintenant je vois, je n'avais pas remarqué que l'erreur dans la prévisualisation du layout est toujours là, mais, le CardView est rendu sans solution de contournement, avez-vous la même chose ?

2 votes

Votre première suggestion est correcte et élimine le problème, qui existe dans Android Studio v3.1.

9voto

Anirban Das Points 302

J'ai également rencontré le même problème, j'ai donc ajouté

<item name="cardViewStyle">@style/CardView</item>

dans mon fichier styles.xml. Mais il affichait un avertissement "La ressource @style/CardView est marquée comme privée dans com.Android.support:design".

Après cela, j'ai essayé celui-ci

<item name="cardViewStyle">@style/CardView.Light</item>

et cela a fonctionné pour moi. J'utilise Android Studio 3.1.4 et Gradle 4.4.

4voto

syslogic Points 749

La mise à jour de la CardView de 27.1.1 a 28.0.0-alpha3 a corrigé l'aperçu XML pour moi sur AS 3.1.3.

implementation "com.android.support:cardview-v7:28.0.0-alpha3"

il se plaint toujours, mais il rend la prévisualisation.

il y a aussi un nouveau androidx qui devrait être la même :

implementation "androidx.cardview:cardview:1.0.0"

lors de la mise à jour com.android.support:design a 28.0.0-alpha3 , il fait allusion à :

The resource @style/CardView is marked as private in com.android.support:design

La rétrogradation à l'API 27 avec buildTools 27.0.3 et supportLibrary 27.1.1 permet également d'éviter les problèmes. 28.0.0 con Android Studio 3.2 ensuite.

1 votes

@Dev mieux vaut migrer vers androidx.cardview:cardview:1.0.0 (ce qui équivaut à 28.0.0 final). alpha , beta y rc n'ont jamais été conçues pour être "stables".

1voto

Dmitry Nevzorov Points 370

Dans mon cas, la raison de l'erreur avec CardView était due à un mauvais attribut listheader d'un Spinner enfant. En plus de l'attribut failed to find style 'cardView Style' in current theme message d'erreur que j'ai obtenu Spinner adapter view type count must be 1 Ainsi, l'origine de la défaillance du CardView se trouve étonnamment dans la défaillance du rendu du Spinner.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X