如果在一直使用SetContentView(new HellwView(this)感觉总是少了一点东西,少了什么了,失去了Android中使用XML定义组件的方便性性,这种感觉让人很不爽,呵呵,在这节里我们会看到一个自定义View报错的解决方法,让我们来看看在XML中定义View吧

一、在XML中定义View的一个小错误

我们试着直接将错误的那个例子写出来

将上一讲的View例子拿出来,修改main布局:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/hello"

/>

<com.fxhy.stady.HelloView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/>

</LinearLayout>

修改MainActivity

super.onCreate(savedInstanceState);

setContentView(R.layout.main);// 使用自定义的View

运行:

我们发现,竟然报错了,我们在LogCat里查看下:

11-24 10:58:38.993: ERROR/AndroidRuntime(323): Caused by: java.lang.NoSuchMethodException: HelloView(Context,AttributeSet)

竟然是没有HelloView(Context,AttributeSet)这个构造器,结局方法呼之欲出了,呵呵。

二、解决方法

只需要在HelloView 中添加以下方法就解决了:

/**

* 这个是我们要在XML中初始化用的

* */

public HelloView(Context context,AttributeSet attrs){

super(context, attrs);

}

运行:

关于这个解决方法网上有类似的问题:为什么非得加上这个方法,其实这个方法是作为系统解析XML中定义的属性时作为回调方法用的。如果想更深入的了解View以及刚才的解决方案的原理的话,可以关注我的博客,我会在以后的《深入解析View原理》中讲解,呵呵,说不定有时候会有一种豁然开朗的感觉。

三、另一中在XML中的View布局

我们也可以使用如下的方法在XML中添加View

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/hello"

/>

<view class="com.fxhy.stady.HelloView"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/>

</LinearLayout>

运行结果与上面一样

OK源码下载

OK源码下载2

OK源码下载3

转载于:https://www.cnblogs.com/lovewf/archive/2011/11/28/2264473.html

Android自定义View研究(四) -- 在XML中定义View相关推荐

  1. 继承ViewGroup研究(2)--在XML中使用ViewGroup初探

    这次研究的是XML中布局自定义ViewGroup,为什么要在XML中自定义ViewGroup,呵呵,其实这个东西吧,还真没法说,我个人的感觉是可以方便的使用Android中已经给出的各种组件,还有自己 ...

  2. Android在string.xml中定义html文档并加载显示,以及拦截WebView链接事件

    一.如何在string.xml中定义html文档 首先最好自己在外部新建一个html文件,然后开始写自己的内容.并且在浏览器中预览效果. 首先预先编写一个简单的html文档: <html> ...

  3. 【mybatis】xml中定义变量

    前言 mybatis 3.4.6 xml中定义变量 <select id="selectListByKeyword" parameterType="map" ...

  4. Android中点击按钮获取string.xml中内容并弹窗提示

    场景 AndroidStudio跑起来第一个App时新手遇到的那些坑: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103797 ...

  5. Android开发——AS插件批量解决XML中的String/Color/Dimen硬编码

    1. 问题抛出 1.1 开发方面 对于日常开发中,每写一个"#333",都要手动的在当前xml与colors.xml中来回切换,查看是否已经定义过,如果定义过则拿过来复用,如果没有 ...

  6. Android strings.xml中定义字符串显示空格

    <string name="str">字 符 串</string> 其中   就表示空格.如果直接在里面键入空格,无论多少空格都只会显示一个. 用的XML转 ...

  7. 在xml中定义excel的sheet_XML和Excel

    题注:本文译自www.jkp-ads.com,供有兴趣的朋友参考. 什么是XMLXML是可扩展标记语言(eXtended Markup Language)的缩写.对于网页来说,XML是标准的设想,目标 ...

  8. php xml 四种,xml中常见的四种解析方式是什么?

    xml解析方式有:1.DOM解析方法,可以对xml文档进行修改操作:2.SAX解析方法,解析速度快,占用内存少:3.JDOM解析方法,查找方便:4.DOM4J解析方法,解析XML的速度快. 在XML的 ...

  9. android表情符号使用,关于android:表情符号符号?? 在string.xml中使应用程序崩溃

    我想整合表情符号? 在我的Android应用中. 因此,我查找了utf-8符号的十六进制代码,并将以下内容添加到我的string.xml文件中: Perfect

最新文章

  1. Android 7.0 多窗口模式
  2. 有关RSA 命令总结
  3. Mac下Sublime text2中文乱码问题的解决
  4. 【bzoj4195】[Noi2015]程序自动分析 离散化+并查集
  5. Java AIO 编程
  6. 按钮右对齐_Python Tkinter Button按钮
  7. Java IO(BIO, NIO, AIO) 总结
  8. 剑与轮回找回服务器,剑与轮回自由之都1服开服时间表_剑与轮回新区开服预告_第一手游网手游开服表...
  9. 实践分享丨物联网操作系统中的任务管理
  10. 互联网公司分批返岗;Safari 将封杀超过398天的 HTTPS 证书;TypeScript 3.8 发布 | 极客头条...
  11. Java面试题详解二:java中的关键字
  12. 如何使用Guitar Pro在乐谱播放时切换效果器音色?
  13. 快速掌握消息队列MQ最内核,图文并茂详解
  14. ubuntu下安装matlab及配置vot-toolkit
  15. Python的数学计算库scipy介绍
  16. 小猫钓鱼纸牌游戏java_java实现纸牌游戏-小猫钓鱼算法
  17. 计蒜客蓝桥杯模拟赛---青出于蓝而胜于蓝
  18. PHP使用FPDF的多字体解决
  19. oracle直接路径读,direct path read直接路径读
  20. 【架构风格】架构风格演进和领域架构分类

热门文章

  1. FastDFS文件上传和下载流程
  2. idea 拉取分支代码
  3. python(numpy,pandas3)——numpy索引
  4. vue+axios天气查询——天知道效果展示及源码分析
  5. 2.1.4 什么是ASCII码?汉字的表示和编码是怎样的?
  6. ios 点击出现另外一套tabbar_iOS开发中TabBar再次点击实现刷新效果
  7. js对文字批注_实现SpreadJS的自定制批注
  8. 事务里面捕获异常_三问Spring事务:解决什么问题?如何解决?存在什么问题?...
  9. centos 安装jdk_Centos7下安装一个或多个tomcat7完整
  10. 设计模式的理解:享元模式 (Flyweight)