サポートライブラリバージョンを更新した後27.1.0
Android 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
からのそのようなエラーはありません。エラーは完全になくなりました。
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プレビューには、何らかの理由でライブラリのこの属性の値が含まれていないと思います。通常、ライブラリで定義されたカスタム属性を解決するのか、これがバグなのか、またはこれが意図されているのかはわかりません。
回避策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 Studio 3.2(現在Canaryチャンネル)では、エラーはなくなりました。
私も同じ問題を抱えていたので、追加しました
<item name="cardViewStyle">@style/CardView</item>
私のstyles.xmlファイルに。しかし、「リソース@ style/CardViewはcom.Android.support:designでプライベートとしてマークされています」という警告を表示していました。
それで、その後、私はこれを試しました
<item name="cardViewStyle">@style/CardView.Light</item>
そしてこれは私のために働いた。 Android Studio 3.1.4およびGradle 4.4を使用しています。
CardView
を 27.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: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を使用してAPI 27にダウングレードすると、問題も防止されます。 Android Studio 3.2 で28.0.0
にアップグレードする場合があります。
私の場合、CardViewのエラーの理由は、子Spinnerの間違ったlistheader属性が原因でした。 failed to find style 'cardView Style' in current theme
エラーメッセージと並んでSpinner adapter view type count must be 1
を取得したため、CardViewの失敗の原因は驚くほどSpinnerのレンダリングの失敗でした。