【问题标题】:Exception : android.view.InflateException: Binary XML file line #2: Error inflating class android.support.v7.widget.CardView异常:android.view.InflateException:二进制 XML 文件第 2 行:错误膨胀类 android.support.v7.widget.CardView
【发布时间】:2014-10-31 13:19:59
【问题描述】:

我在我的 android 应用程序中使用支持库的CardView。我尝试了 4-5 小时来解决这个问题,但我无法成功。

我在我的项目和 v7 appcompat 中添加了 CardView 作为库

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="5dp"
    android:orientation="horizontal"
    app:cardCornerRadius="4dp" >

但我的应用程序因以下日志而崩溃

10-31 18:41:39.577: E/AndroidRuntime(5666): FATAL EXCEPTION: main
10-31 18:41:39.577: E/AndroidRuntime(5666): Process: com.xyzladdoo, PID: 5666
10-31 18:41:39.577: E/AndroidRuntime(5666): android.view.InflateException: Binary XML file line #2: Error inflating class android.support.v7.widget.CardView
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:707)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at com.xyzladdoo.adapters.RecycleViewAdapter.onCreateViewHolder(RecycleViewAdapter.java:85)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at com.xyzladdoo.adapters.RecycleViewAdapter.onCreateViewHolder(RecycleViewAdapter.java:1)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:2915)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:2511)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.support.v7.widget.LinearLayoutManager$RenderState.next(LinearLayoutManager.java:1425)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:999)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:524)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:1461)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:1600)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.View.layout(View.java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewGroup.layout(ViewGroup.java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:543)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.View.layout(View.java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewGroup.layout(ViewGroup.java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.View.layout(View.java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewGroup.layout(ViewGroup.java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.View.layout(View.java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewGroup.layout(ViewGroup.java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1594)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.View.layout(View.java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewGroup.layout(ViewGroup.java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:887)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.View.layout(View.java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewGroup.layout(ViewGroup.java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.View.layout(View.java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewGroup.layout(ViewGroup.java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.support.v7.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:502)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.View.layout(View.java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewGroup.layout(ViewGroup.java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.View.layout(View.java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewGroup.layout(ViewGroup.java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.View.layout(View.java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewGroup.layout(ViewGroup.java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.View.layout(View.java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewGroup.layout(ViewGroup.java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2013)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1770)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1019)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5725)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.Choreographer.doCallbacks(Choreographer.java:574)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.Choreographer.doFrame(Choreographer.java:544)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at an

有什么帮助吗?提前致谢。

【问题讨论】:

  • 那是你的 xml 吗?贴更多的,还有你的 inflate。
  • @FaroukTouzi 我正在使用广告
  • 添加 xmlns:card_view="schemas.android.com/apk/res-auto" 行
  • 我解决了我的问题。我设置了一个可绘制集作为我的android:foreground="@drawable/ripple.xml",它使用 API 21 波纹选择器

标签: android android-support-library android-cardview


【解决方案1】:

让导入cardview作为一个库:
转到文件 -> 导入 -> 现有 Android 代码到工作区 --> 浏览(转到 sdk/extras/android/support/v7/cardview)--> 单击确定 --> 单击完成

您的项目浏览器现在会将 cardview 显示为一个项目。

在cardview项目上右击-->属性-->安卓(左窗格)-->启用isLibrary(勾选复选框)-->应用-->确定

现在右键单击您的项目 --> 属性 --> Android(左窗格) --> 添加 (在库下) --> cardview --> 应用 --> ok

现在再次右键单击您的项目 --> 构建路径 --> 配置构建路径 --> 在项目选项卡下,添加卡片视图

你已经完成了。
Source

【讨论】:

  • 不客气。我以前遇到过这个错误。我在 Google 上搜索并在 StackOverFlow 上找到了两个关于此问题的问题,但其中一个问题的答案可以帮助我解决问题。所以我复制/粘贴到这里:)
  • 实际上我在我的项目中添加了 v7 abcompat 库,并认为这也足以带来 cardview。后来我通过您的回答意识到 cardView 库是单独可用的。非常感谢..
  • 不要忘记将“libs”文件夹中的实际文件添加到构建路径,然后在 Order and Export 中检查它。根据developer.android.com/tools/support-library/…,这是必须的
  • 非常有用的评论,我花了半天多的时间处理这个错误(但在eclipse中使用recyclerview),终于找到了正确的答案!谢谢你,兄弟!
【解决方案2】:

(对于 intellij 用户)

  • 点击您的项目,
  • 右键->打开模块设置
  • 从\sdk\extras\android\support\v7\导入cardview
  • 将 .jar 文件添加到 cardview 模块中
  • 单击您的项目并将模块依赖项赋予cardview
  • 现在,点击 cardview 上的 (+) 按钮 -> android -> 在顶部您会看到一个复选框(库模块),启用它。
  • 点击确定并关闭您的设置对话框。
  • 重建您的项目并运行它。

【讨论】:

    【解决方案3】:

    包含除已编译类之外的资源(如 XML)的支持库不能仅作为 jars 添加。

    请按照这里描述的步骤操作:

    https://developer.android.com/tools/support-library/setup.html#libs-with-res

    如果可行,我们现在就来。

    【讨论】:

    • @MohammedEAmer:谢谢,你拯救了我的一天。
    【解决方案4】:

    解决这个问题。 首先你必须从 \sdk\extras\android\support

    添加 cardview
    1. 关闭主项目。
    2. 删除 android-support-v7-appcompat 。
    3. 重新启动 Eclipse。
    4. 添加 android-support-v7-appcompat 。
    5. 清理,构建项目。
    6. 然后打开主项目并构建所有项目。
    7. 错误仍然存​​在。重启日食。就是这样。

    这对我有用。

    【讨论】:

    • 但是现在,我推荐你使用android studio
    【解决方案5】:

    试试这个..

    <android.support.v7.widget.CardView
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        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">
    
    
    </android.support.v7.widget.CardView>
    

    参考Create Cards

    【讨论】:

      【解决方案6】:

      尝试像这样与外部线性布局一起使用。

       <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          xmlns:card_view="http://schemas.android.com/apk/res-auto"
          ... >
          <!-- A CardView that contains a TextView -->
          <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>
      </LinearLayout>
      

      【讨论】:

        【解决方案7】:

        我和你有同样的问题。

        Eclipse 中,当您从目录 \sdk\extras\android\support\v7\cardview 导入 cardview 时,请按照官方文档中“使用资源添加库 -> Eclipse”中注释的步骤进行操作: https://developer.android.com/intl/es/tools/support-library/setup.html#libs-with-res

        在将 cardview 作为库添加到您的项目之前,请转到 cardview 项目 的“Properties -> Android”并添加 android-support-v7-appcompat 库。 别忘了检查“IsLibrary”。

        现在,您可以将 cardview 作为库添加到您的项目中。清理两个项目以刷新更改。

        希望对你有帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-01-12
          • 2018-05-03
          • 1970-01-01
          • 1970-01-01
          • 2014-08-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多