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.