代码之家  ›  专栏  ›  技术社区  ›  Bhuvanesh BS

在当前主题中找不到样式“cardView样式”

  •  50
  • Bhuvanesh BS  · 技术社区  · 6 年前

    更新支持库版本后 27.1.0 Android Studio 无法呈现CardView。它将错误消息显示为

    failed to find style 'cardView Style' in current theme
    

    但在编译时没有错误,在电话上看到时也没有区别。

    我已将支持库版本还原为 27.0.2 而且效果很好。

    支持库或 Android studio ?如何修复此问题?

    应用程序级别梯度:

    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'
    

    项目级梯度:

    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 。错误完全消失了。

    4 回复  |  直到 6 年前
        1
  •  92
  •   lelloman    6 年前

    检查的来源 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 Studio预览没有包含库中该属性的值。我不确定它是否通常解析库中定义的自定义属性,这是一个bug,或者这是有意的。

    解决方法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 命名空间,以便它不会影响生产代码。将记录渲染错误,但您将看到 卡片视图 无论如何

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

    好消息

    Android Studio 3.1似乎正确地处理了这一问题,无需解决(但布局预览中的错误仍会被记录)。

    在Android Studio 3.2(目前位于金丝雀频道)上,错误消失了。

        2
  •  9
  •   Anirban Das    6 年前

    我也有同样的问题,所以我补充道

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

    以我的风格。xml文件。但它显示了一条警告:“在com.android中,resource@style/cardwiew被标记为私有。支持:设计”。

    所以,在那之后我试过这个

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

    这对我很有用。我正在使用Android Studio 3.1.4和Gradle 4.4。

        3
  •  4
  •   Martin Zeitler    5 年前

    正在更新 CardView 从…起 27.1.1 28.0.0-alpha3 修复了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:design 28.0.0-alpha3 ,它提示:

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

    使用buildTools 27.0.3和;supportLibrary 27.1.1还可以防止这些问题。可能升级到 28.0.0 具有 Android Studio 3.2 然后

        4
  •  1
  •   Dmitry Nevzorov    6 年前

    在我的例子中,CardView出错的原因是子微调器的listheader属性错误。沿着 failed to find style 'cardView Style' in current theme 收到错误消息 Spinner adapter view type count must be 1 因此,CardView失败的根源出人意料地在于微调器渲染失败。