web-dev-qa-db-de.com

Der Stil 'cardView Style' konnte im aktuellen Design nicht gefunden werden

Nach dem Update der Unterstützungsbibliotheksversion 27.1.0Android Studio CardView kann nicht gerendert werden. Es zeigt Fehlermeldung als

failed to find style 'cardView Style' in current theme

Aber kein Fehler beim Kompilieren und kein Unterschied beim Sehen am Telefon.

Ich habe die Version der Unterstützungsbibliothek auf 27.0.2 Zurückgesetzt und es wird gut gerendert.

Das Problem mit der Support-Bibliothek oder Android Studio? Wie kann man das beheben?

App Level 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 auf Projektebene:

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
}

pdate:

Es gibt keinen solchen Fehler von Android Studio 3.2. Der Fehler war komplett verschwunden.

48
Bhuvanesh BS

Wenn man die Quelle von CardView überprüft, kann man sehen, dass der Konstruktor

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

wurde geändert in

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

Und das neue Attribut cardViewStyle ist in der Bibliothek definiert. Ich vermute, dass die Android Studio-Vorschau aus irgendeinem Grund nicht den Wert für dieses Attribut aus der Bibliothek enthält. Ich bin mir nicht sicher, ob sie normalerweise benutzerdefinierte Attribute auflöst, die in Bibliotheken definiert sind, und dies ist eine Fehler, oder wenn dies beabsichtigt ist.

Problemumgehung 1

Beheben Sie das Attribut in Ihrem Design (möglicherweise nur in der Debug-Version), damit der Fehler behoben ist. @style/CardView ist bereits in der Support-Bibliothek definiert, sodass Sie den Stil nicht erstellen müssen, sondern nur darauf verweisen.

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

Stellen Sie sicher, dass Sie AppTheme in der Layoutvorschau und im Clean Build verwenden.

Problemumgehung 2

Fügen Sie den Stil mit dem Namespace tools hinzu, damit er sich nicht auf Ihren Produktionscode auswirkt. Der Rendering-Fehler wird protokolliert, aber Sie werden trotzdem den CardView sehen

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

Gute Nachricht

Android Studio 3.1 scheint dies korrekt zu handhaben, es ist keine Problemumgehung erforderlich (der Fehler in der Layoutvorschau wird jedoch weiterhin protokolliert).

Auf Android Studio 3.2 (derzeit im kanarischen Kanal) ist der Fehler behoben.

91
lelloman

Ich hatte auch das gleiche Problem, also fügte ich hinzu

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

in meiner styles.xml Datei. Es wurde jedoch eine Warnung angezeigt "Die Ressource @ style/CardView ist in com.Android.support:design als privat markiert".

Also, danach habe ich es versucht

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

und das hat bei mir funktioniert. Ich verwende Android Studio 3.1.4 und Gradle 4.4.

9
Anirban Das

aktualisieren des CardView von 27.1.1 auf 28.0.0-alpha korrigierte die XML-Vorschau für mich auf AS 3.1.3.

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

es beschwert sich immer noch, rendert aber die Vorschau.

es gibt auch eine neue androidx Klasse, die gleich sein sollte:

implementation "androidx.cardview:cardview:1.0.0"

wenn Sie com.Android.support:design auf 28.0.0-alpha3 aktualisieren, wird Folgendes angezeigt:

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

das Zurückrüsten auf API 27 mit buildTools 27.0.3 und supportLibrary 27.1.1 verhindert ebenfalls die Probleme. kann dann mit Android Studio 3.2 auf 28.0.0 upgraden.

4
Martin Zeitler

In meinem Fall lag der Grund für den Fehler bei CardView am falschen Listheader-Attribut eines untergeordneten Spinners. Neben dem failed to find style 'cardView Style' in current theme Fehlermeldung habe ich Spinner adapter view type count must be 1, so dass die Wurzeln des CardView-Fehlers überraschenderweise in einem Spinner-Rendering-Fehler lagen.

1
Dmitry Nevzorov