微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SDK 19及以下版本无法识别android.support.v7.widget.CardView,错误膨胀类

在我的Xml文件中,我有cardView

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_height="wrap_content"
android:paddingLeft="4dp"
android:paddingRight="4dp"
android:paddingBottom="2dp">

<android.support.v7.widget.CardView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:foreground="?android:attr/selectableItemBackground"
    android:id="@+id/channel_cardview"
    app:cardBackgroundColor="@android:color/white"
    app:cardElevation="2dp"
    app:cardMaxElevation="2dp"
    app:cardUseCompatPadding="true">

   .... some other elements here 
  </RelativeLayout>

当我在SDK 23上运行我的应用程序时,它工作正常,但是当我在SDK 19或SDK 16上运行它时,它无法工作并抛出此错误

E/AndroidRuntime: FATAL EXCEPTION: main
android.view.InflateException: Binary XML file line #10: Error inflating class <unkNown>
    at android.view.LayoutInflater.createView(LayoutInflater.java:613)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
    at pb.pocketboard.ChannelFragment$ChannelsAdapter.onCreateViewHolder(ChannelFragment.java:578)
    at pb.pocketboard.ChannelFragment$ChannelsAdapter.onCreateViewHolder(ChannelFragment.java:537)
    at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:5482)
    at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4707)

错误指向行号. 10是cardViewCLass,
也许系统没有识别Cardview类,所以我搜索相关的问题,那里的问题是没有添加依赖项,但我已经添加了它

我的Gradle:

dependencies {

compile filetree(include: ['*.jar'],dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
compile 'com.mikhaellopez:circularimageview:2.1.1'
compile 'com.isseiaoki:simplecropview:1.0.16'
compile 'com.android.support:recyclerview-v7:23.4.0'
compile 'com.android.support:cardview-v7:23.4.0'
compile 'com.android.support:support-v4:23.4.0'
compile('com.github.afollestad.material-dialogs:core:0.8.5.3@aar') {
    transitive = true
}
compile files('libs/commons-io-2.4.jar')
}

我的java类,我正在给布局充气

@Override
public ChannelsViewHolder onCreateViewHolder(ViewGroup parent,int viewType) {

    View rowView = inflater.inflate(R.layout.custom_channel_row,parent,false); // error is here 
    ChannelsViewHolder holder = new ChannelsViewHolder(rowView,this);

    return holder;
    }

任何线索为什么会发生这种情况?

解决方法

CardView是在棒棒糖版本中添加的.当您尝试使用RecyclerView(或在API 20(v5.0)或更高版本中添加的任何其他View)时,会出现同样的问题.虽然它们被添加支持库中.

现在,一旦你想到为什么他们被添加支持库?

这是因为开发人员可以在旧版本的Android手机中使用它们,而不是因为开发人员可以在旧版本的SDK中使用它们.基本上,开发人员总是在更新的SDK上开发应用程序.

我想这可能是我的原因:)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐