studio recyclerview recycler imágenes example ejemplo dependencia con cardview card android kotlin android-gradle rendering android-support-library

android - recyclerview - no se pudo encontrar el estilo ''cardView Style'' en el tema actual



dependencia cardview android studio (4)

Después de actualizar la biblioteca de soporte versión 27.1.0 Android Studio no puede mostrar CardView. Muestra un mensaje de error como

failed to find style ''cardView Style'' in current theme

Pero no hay error en la compilación y ninguna diferencia al ver en el teléfono.

He revertido la versión de la biblioteca de soporte a 27.0.2 y funciona bien.

¿El problema con la biblioteca de soporte o el estudio de Android ? ¿Cómo arreglar esto?

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''

Proyecto Nivel 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 }


Comprobando la fuente de CardView uno puede ver que el constructor

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

ha sido cambiado a

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

Y el nuevo atributo cardViewStyle se define en la biblioteca. Supongo que la vista previa de Android Studio no incluye el valor para este atributo de la biblioteca, por alguna razón. No estoy seguro si generalmente resuelve los atributos personalizados definidos en las bibliotecas y esto es un error, o si esto es intencionado.

Solución 1

Resuelva el atributo en su tema (tal vez solo en la versión de depuración), de esta forma el error desaparecerá. @style/CardView ya está definido en la biblioteca de soporte, por lo que no es necesario crear el estilo, solo hacer referencia a él.

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

Asegúrese de utilizar AppTheme en la vista previa del diseño y compilación limpia.

Solución 2

Agregue el estilo con el espacio de nombres de las tools para que no afecte su código de producción. El error de renderización se registrará, pero verá CardView todos modos

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

Buenas noticias

Android Studio 3.1 parece estar manejando esto correctamente, no se necesita ninguna solución (aunque el error en la vista previa del diseño todavía se registra).

En Android Studio 3.2 (actualmente en el canal de Canarias) el error se ha ido.


En mi caso, el motivo del error con CardView se debió al atributo de encabezado de lista incorrecto de un Spinner hijo. Junto con el failed to find style ''cardView Style'' in current theme mensaje de error de failed to find style ''cardView Style'' in current theme que obtuve Spinner adapter view type count must be 1 , por lo que las raíces de la falla de CardView fueron sorprendentemente en la falla de renderizado de Spinner.


También tuve el mismo problema, así que agregué

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

en mi archivo styles.xml Pero mostraba una advertencia: "El estilo resource @ / CardView está marcado como privado en com.android.support:design".

Entonces, después de eso intenté este

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

y esto funcionó para mí. Estoy usando Android Studio 3.1.4 y Gradle 4.4.


la actualización de CardView de 27.1.1 a 28.0.0-alpha3 arregló la vista previa de XML para mí en AS 3.1.3.

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

todavía se queja, pero muestra la vista previa.

también hay una nueva clase de androidx ahora, que debería ser la misma:

implementation "androidx.cardview:cardview:1.0.0-beta01"

al actualizar com.android.support:design a 28.0.0-alpha3 , sugiere:

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

volver a bajar a API 27 con buildTools 27.0.3 y supportLibrary 27.1.1 también evita los problemas. podría actualizar a 28.0.0 con Android Studio 3.2 luego.