16

我想试试谷歌给我们的新玩具,但遇到了一些麻烦。

这是我的 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:+'
}

现在我的布局:

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

当我在 android studio 中切换到屏幕预览时,出现渲染错误:

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)

我尝试忽略错误并在 avd 中运行应用程序,虽然一切编译正常,但布局中没有出现 cardview。请帮忙!

Ps 我正在使用新的 Android Studio beta 0.8.0

4

7 回答 7

31

通过将 build.gradle 更改为此,我能够让它在模拟器上工作:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:cardview-v7:+'
}

确保您已从 SDK 管理器安装了支持存储库!希望这可以帮助

编辑:正如有人建议使用 'com.android.support:cardview-v7:23.1' 是一种更好的做法,但它不是必需的。

于 2014-06-28T00:24:55.670 回答
17

尝试将此行添加到您的RelativeLayout

xmlns:card_view="http://schemas.android.com/apk/res-auto"
于 2014-10-19T14:08:05.553 回答
6

它通过添加解决了我 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>
于 2015-12-05T17:08:51.023 回答
3

通过将以下内容添加到我的 build.gradle 中,我能够使其工作: compile 'com.android.support:cardview-v7:21.+'

希望这可以帮助。

于 2014-09-17T15:31:31.293 回答
2

这是 Android Studio 中的一个错误,请参阅https://code.google.com/p/android/issues/detail?id=79071

补丁的其中一条评论写道:“这导致卡片视图渲染失败。CardView 声明了表单 CardView.Dark 的样式,因此生成的 R 类无法加载。”

下一个版本应该根据错误报告修复这个问题(补丁在分支 studio-1.0-dev 上)。他们说构建项目一次作为一种解决方法,但这并不能为我解决它(即使我有完全相同的错误和堆栈跟踪)。

于 2014-11-21T10:44:47.213 回答
0

尝试将此添加到您的 build.gradle 文件中

dependencies {
...
compile 'com.android.support:cardview-v7:21.0.+'
compile 'com.android.support:recyclerview-v7:21.0.+'
...
}
于 2015-09-22T08:58:11.550 回答
0

转到应用程序,右键单击:打开模块 -> 设置 -> 依赖项。

转到“已声明的依赖项”,您会在标题下找到“+”号。

单击“库依赖项”。

搜索“材料”并转到“版本部分”。

应用 1.0.0 并单击“确定”。

然后搜索卡片视图你会得到它和类

于 2020-03-21T03:31:24.827 回答