web-dev-qa-db-ja.com

現在のテーマでスタイル「cardView Style」が見つかりませんでした

サポートライブラリバージョンを更新した後27.1.0Android Studio CardViewをレンダリングできません。エラーメッセージが表示されます

failed to find style 'cardView Style' in current theme

しかし、コンパイルでエラーはなく、電話で見ているときに違いはありません。

サポートライブラリのバージョンを27.0.2に戻しましたが、正常にレンダリングされています。

サポートライブラリまたはAndroid studio?の問題これを修正する方法は?

アプリレベル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:

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
}

更新:

Android Studio 3.2からのそのようなエラーはありません。エラーは完全になくなりました。

48
Bhuvanesh BS

CardViewのソースを確認すると、コンストラクタが

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

に変更されました

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

そして、新しい属性cardViewStyleがライブラリに定義されています。 Android St​​udioプレビューには、何らかの理由でライブラリのこの属性の値が含まれていないと思います。通常、ライブラリで定義されたカスタム属性を解決するのか、これがバグなのか、またはこれが意図されているのかはわかりません。

回避策1

テーマの属性を解決します(おそらくデバッグバージョンのみ)。これにより、エラーはなくなります。 @style/CardViewはサポートライブラリで既に定義されているため、スタイルを作成する必要はなく、参照するだけです。

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

レイアウトプレビューとクリーンビルドでAppThemeを必ず使用してください。

回避策2

tools名前空間を持つスタイルを追加して、実稼働コードに影響を与えないようにします。レンダリングエラーはログに記録されますが、とにかくCardViewが表示されます

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

朗報

Android Studio 3.1はこれを正しく処理しているようで、回避策は必要ありません(レイアウトプレビューのエラーは引き続き記録されます)。

Android St​​udio 3.2(現在Canaryチャンネル)では、エラーはなくなりました。

91
lelloman

私も同じ問題を抱えていたので、追加しました

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

私のstyles.xmlファイルに。しかし、「リソース@ style/CardViewはcom.Android.support:designでプライベートとしてマークされています」という警告を表示していました。

それで、その後、私はこれを試しました

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

そしてこれは私のために働いた。 Android St​​udio 3.1.4およびGradle 4.4を使用しています。

9
Anirban Das

CardView27.1.1 から 28.0.0-alpha に更新すると、AS 3.1.3でのXMLプレビューが修正されました。

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

まだ文句を言いますが、プレビューをレンダリングします。

また、新しい androidx クラスが追加されました。これは同じである必要があります。

implementation "androidx.cardview:cardview:1.0.0"

com.Android.support:design28.0.0-alpha3に更新すると、次のヒントが得られます。

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

buildTools 27.0.3およびsupportLibrary 27.1.1を使用してAPI 27にダウングレードすると、問題も防止されます。 Android Studio 3.228.0.0にアップグレードする場合があります。

4
Martin Zeitler

私の場合、CardViewのエラーの理由は、子Spinnerの間違ったlistheader属性が原因でした。 failed to find style 'cardView Style' in current themeエラーメッセージと並んでSpinner adapter view type count must be 1を取得したため、CardViewの失敗の原因は驚くほどSpinnerのレンダリングの失敗でした。

1
Dmitry Nevzorov