Reputation: 868
I wanted to try out the new toys that google gave us and I've run into some trouble.
Here is my build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 'android-L'
buildToolsVersion "20.0.0"
defaultConfig {
applicationId "com.tod.android.lpreviewtest"
minSdkVersion 'L'
targetSdkVersion 'L'
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:cardview-v7:+'
}
Now my layout:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MyActivity">
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_view"
android:layout_gravity="center"
android:layout_width="200dp"
android:layout_height="200dp"
card_view:cardCornerRadius="4dp">
<TextView
android:id="@+id/info_text"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.v7.widget.CardView>
</RelativeLayout>
When I switch to screen preview in android studio, I get a render error:
Rendering Problems The following classes could not be instantiated:
- android.support.v7.widget.CardView (Open Class, Show Exception)
Exception Details java.lang.ClassFormatError: Illegal field name "CardView.Dark"
in class android/support/v7/cardview/R$style at
java.lang.ClassLoader.defineClass1(ClassLoader.java:-2) at
java.lang.ClassLoader.defineClass(ClassLoader.java:792) at
java.lang.ClassLoader.defineClass(ClassLoader.java:635) at
java.lang.ClassLoader.loadClass(ClassLoader.java:424) at
java.lang.ClassLoader.loadClass(ClassLoader.java:411) at
java.lang.ClassLoader.loadClass(ClassLoader.java:357) at
android.support.v7.widget.CardView.initialize(CardView.java:69) at
android.support.v7.widget.CardView.<init>(CardView.java:60) at
java.lang.reflect.Constructor.newInstance(Constructor.java:526) at
android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:802) at
android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64) at
android.view.LayoutInflater.rInflate(LayoutInflater.java:778) at
android.view.LayoutInflater.inflate(LayoutInflater.java:500) at
android.view.LayoutInflater.inflate(LayoutInflater.java:381)
I tried ignoring the error and running the app in an avd and while everything compiles fine, no cardview appears in the layout. Please help!
P.s. I'm using the new Android Studio beta 0.8.0
Upvotes: 16
Views: 35228
Reputation: 1
Just add this
xmlns:app="http://schemas.android.com/apk/res-auto"
and it will download namespace
Upvotes: 0
Reputation: 1
Go to app, right click on: Open module -> Settings -> Dependencies.
Go to "Declared dependencies" and you will find the "+" sign under the title.
Click on "Library dependencies".
Search for "Material" and go to "version section".
Apply 1.0.0 and click "ok".
And then search for card view you will get it on and the class
Upvotes: 0
Reputation: 957
It solved me by adding xmlns:card_view="http://schemas.android.com/apk/res-auto"
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:card_view="http://schemas.android.com/apk/res-auto"> --->> ******
....
...
<android.support.v7.widget.CardView>
..
...
.....
</android.support.v7.widget.CardView>
</LinearLayout>
Upvotes: 6
Reputation:
I was able to get it to work on the emulator by changing my build.gradle to this:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:cardview-v7:+'
}
Make sure you have the support repository installed from the SDK Manager! Hope this helps
EDIT: as someone suggested using 'com.android.support:cardview-v7:23.1' is a better practice but it not required.
Upvotes: 31
Reputation: 77
Try adding this to your build.gradle file
dependencies {
...
compile 'com.android.support:cardview-v7:21.0.+'
compile 'com.android.support:recyclerview-v7:21.0.+'
...
}
Upvotes: 0
Reputation: 1850
This is a bug in Android Studio, see https://code.google.com/p/android/issues/detail?id=79071
One of the comments of the patch reads: "This was causing card view rendering to fail. CardView declared styles of the form CardView.Dark due to which the generated R class failed to load."
Next version should have this fixed according to the bug report (the patch is on branch studio-1.0-dev). They say to build the project once as a workaround, but this does not fix it for me (even though I have exactly the same error and stack trace).
Upvotes: 2
Reputation: 2570
try adding this line to your RelativeLayout
xmlns:card_view="http://schemas.android.com/apk/res-auto"
Upvotes: 17
Reputation: 31
I was able to get this to work by adding the following to my build.gradle: compile 'com.android.support:cardview-v7:21.+'
Hope this helps.
Upvotes: 3