Android开发中我们经常会遇到自定义View地址映射错误的情况,现将遇到的情况做下总结:

//Android Studio的异常信息

Error inflating class

1、直接像下面这样,包名所对应的地址错误:在XML中我们地址是com.kcrason.kcircle.widget.HaoRecyclerView,而在实际的项目包名中可能为com.kcrason.kcircle.HaoRecyclerView,从而导致异常信息。

android:id="@+id/rv_list"

android:listDivider="@color/gray"

android:layout_width="match_parent"

android:layout_height="match_parent"

>

2、包含include标签的XML,且include中的View中含有错误的自定义View的地址,如下面所示,include标签中的include_view有错误,一般最容易让人忽略。

android:id="@+id/rv_list"

android:listDivider="@color/gray"

android:layout_width="match_parent"

android:layout_height="match_parent"

>

3、在Android系统进行XML映射时出现错误,一般来说,即自定义View的初始化操作有问题。通常我们在自定义View时都是构建一个 init() 方法进行一些初始化操作,而正是这些操作造成了一个隐患。因为如果在解析XML中的自定义View不成功时,或者说在这一过程出现了异常时,所抛出的异常信息依然是 Error inflating class ,这是一个非常隐蔽的错误,一般而言,我们不通过断点调试,很难发现到底出了什么问题。

PS:我们在构建自定义View时设置View的背景颜色-

private void init(){

//此处省略

...

setBackground(context.getDrawable(R.color.white));

//此处省略

...

}

乍一看好像没啥问题,确实,这段代码在Android 5.0及以上的系统上跑没有任何问题,但是在Android 5.0以下就会直接抛出上面的异常信息。首先 setBackground() 只在API 16及以上才支持,同时 context.getDrawable() 更是LOLLIPOP才支持的方法。而就目前而言,Android studio自定推荐的最低项目版本都是在API 15,结果可想而知。这样写就不再有问题,虽然会提示我们该方法已经过期,但是没关系。当然你也可以通过版本判断,不同版本下使用不同的方法,从而解决这一问题。

setBackgroundDrawable(context.getResources().getDrawable(R.color.white));

当然,这里所讲的并不是为了说明版本的适配问题,而是为了更清楚的阐述关于自定义View所造成的一些问题。

4、自定义View时,构造方法有问题。这个一般很少出现。

PS:关于自定义组件,还需要注意的一点是,如果时内部类,这个类就不能作为layout中的节点的名称,而必须用view作为节点名,然后加入一个class属性,值为该内部类的引用,比如launcher中又下面这样一个例子:

class="com.android.launcher2.AllApps2D$HomeButton"

android:id="@+id/all_apps_2d_home"

android:tag="all_apps_2d_home"

android:src="@drawable/home_button"

android:background="#FF000000"

android:layout_centerHorizontal="true"

android:layout_alignParentBottom="true"

android:layout_width="wrap_content"

android:layout_height="@dimen/button_bar_height"

android:nextFocusUp="@+id/all_apps_2d_grid"

android:nextFocusDown="@null"

android:nextFocusLeft="@null"

android:nextFocusRight="@null"

/>

Android之自定义view引用xml,Android自定义View在XML中映射错误相关推荐

  1. android 自定义view xml ,Android实现在xml文件中引用自定义View的方法分析

    本文实例讲述了Android实现在xml文件中引用自定义View的方法.分享给大家供大家参考,具体如下: 在xml中引用自定义view 方法一: android:layout_width=" ...

  2. Android 自定义View二(深入了解自定义属性attrs.xml)

    1.为什么要自定义属性 要使用属性,首先这个属性应该存在,所以如果我们要使用自己的属性,必须要先把他定义出来才能使用.但我们平时在写布局文件的时候好像没有自己定义属性,但我们照样可以用很多属性,这是为 ...

  3. 使用XML声明自定义Android UI元素

    如何使用XML声明Android UI元素? #1楼 Google似乎更新了其开发者页面,并在那里添加了各种培训. 其中一个处理自定义视图的创建,可以在这里找到 #2楼 除了大多数投票的答案. obt ...

  4. 【Android 修炼手册】常用技术篇 -- Android 自定义 View

    这是[Android 修炼手册]系列第 9 篇文章,如果还没有看过前面系列文章,欢迎点击 这里 查看- 预备知识 了解 android 基本开发 看完本文可以达到什么程度 学会自定义 View 以及其 ...

  5. Android自定义滑动进度条,Android自定义View实现圆形水波进度条

    每次听到某大牛谈论自定义View,顿时敬佩之心,如滔滔江水连绵不绝,心想我什么时候能有如此境界,好了,心动不如行动,于是我开始了自定义View之路,虽然过程有坎坷,但是结果我还是挺满意的.我知道大牛还 ...

  6. android view 渐变动画,Android自定义view渐变圆形动画

    本文实例为大家分享了Android自定义view渐变圆形动画的具体代码,供大家参考,具体内容如下 直接上效果图 自定义属性 attrs.xml文件 创建一个类 ProgressRing继承自 view ...

  7. android自定义view生命周期,android基础之自定义view

    一.Custom View 1.view的继承关系 view继承关系.png 2.Android 如何绘制试图层次 当activity获取焦点时,它必须提供layout层次的根节点,然后android ...

  8. android 自定义view控件,Android 自定义View——自定义View控件

    Android给我们提供了大量的View控件,但这还是远远满足不了我们的要求,有时候开发所需要的控件形式是在Android提供的控件中是不存在,这就需要我们自己去定义一个.那么如何自定义控件? 学习自 ...

  9. android 自定义布局 根据布局获取类,阿里高级Android面试题解析:Android自定义View—布局过程的自定义...

    自定义分三部分绘制.布局和触摸反馈,本篇主要讲的布局过程的自定义 布局过程的含义 布局过程,就是程序在运行时利用布局文件的代码来计算出实际尺寸的过程. 布局过程的工作内容 两个阶段:测量阶段和布局阶段 ...

最新文章

  1. ODOO权限管理,在两个方面设置权限
  2. 实现无锁的栈与队列(1)
  3. 我国网民规模已达7.51亿 但网络安全值得警惕
  4. Python简明教程
  5. mysql 基本使用教程(源于网络)
  6. mysql5.7.21源码安装
  7. Kotlin学习笔记——安装配置kotlin
  8. C语言中CY位什么时候才能为1_你真的了解C语言中的整型吗?
  9. 一篇文章带初学者明白:什么是编译器,什么是集成开发环境(IDE)?
  10. 锅巴文件共享软件地址和说明
  11. php在登录页面使用ajax,使用Ajax安全的登录界面
  12. call和apply的作用和不同
  13. 【彻底解决】django migrate (mysql.W002) 【专治强迫症】
  14. Java小白进阶笔记(5)-进阶面向对象
  15. yuv420转yuv422(yuyv)
  16. 杭州英博电磁流量计通讯协议
  17. 网络设备高可用性简例
  18. 设计模式之简单工厂、工厂方法、抽象工厂
  19. 通过linux进程号(pid)查找Oracle的session中都执行那些sql
  20. 网络套接字------IP地址

热门文章

  1. 解码python_Python解码
  2. php求未知数怎么求,PHP的-输入未知数的字段到MySQL-为此的最佳...
  3. python写空气质量提醒_你所在的城市空气质量如何?用Python可视化分析空气质量...
  4. python删除指定文件夹下文件和文件夹的方法
  5. python中的set类型
  6. Python基础练习题合集
  7. Python技巧:不要在for与while循环后写else块
  8. powershell共享服务器写文件,Windows PowerShell:共享您的脚本 - 轻松实现
  9. centos7重启桌面服务_CENTOS7安装桌面系统
  10. C语言函数调用过程的汇编分析(停更)