Android自定义View研究(四) -- 在XML中定义View
如果在一直使用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相关推荐
- 继承ViewGroup研究(2)--在XML中使用ViewGroup初探
这次研究的是XML中布局自定义ViewGroup,为什么要在XML中自定义ViewGroup,呵呵,其实这个东西吧,还真没法说,我个人的感觉是可以方便的使用Android中已经给出的各种组件,还有自己 ...
- Android在string.xml中定义html文档并加载显示,以及拦截WebView链接事件
一.如何在string.xml中定义html文档 首先最好自己在外部新建一个html文件,然后开始写自己的内容.并且在浏览器中预览效果. 首先预先编写一个简单的html文档: <html> ...
- 【mybatis】xml中定义变量
前言 mybatis 3.4.6 xml中定义变量 <select id="selectListByKeyword" parameterType="map" ...
- Android中点击按钮获取string.xml中内容并弹窗提示
场景 AndroidStudio跑起来第一个App时新手遇到的那些坑: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103797 ...
- Android开发——AS插件批量解决XML中的String/Color/Dimen硬编码
1. 问题抛出 1.1 开发方面 对于日常开发中,每写一个"#333",都要手动的在当前xml与colors.xml中来回切换,查看是否已经定义过,如果定义过则拿过来复用,如果没有 ...
- Android strings.xml中定义字符串显示空格
<string name="str">字 符 串</string> 其中 就表示空格.如果直接在里面键入空格,无论多少空格都只会显示一个. 用的XML转 ...
- 在xml中定义excel的sheet_XML和Excel
题注:本文译自www.jkp-ads.com,供有兴趣的朋友参考. 什么是XMLXML是可扩展标记语言(eXtended Markup Language)的缩写.对于网页来说,XML是标准的设想,目标 ...
- php xml 四种,xml中常见的四种解析方式是什么?
xml解析方式有:1.DOM解析方法,可以对xml文档进行修改操作:2.SAX解析方法,解析速度快,占用内存少:3.JDOM解析方法,查找方便:4.DOM4J解析方法,解析XML的速度快. 在XML的 ...
- android表情符号使用,关于android:表情符号符号?? 在string.xml中使应用程序崩溃
我想整合表情符号? 在我的Android应用中. 因此,我查找了utf-8符号的十六进制代码,并将以下内容添加到我的string.xml文件中: Perfect
最新文章
- Android 7.0 多窗口模式
- 有关RSA 命令总结
- Mac下Sublime text2中文乱码问题的解决
- 【bzoj4195】[Noi2015]程序自动分析 离散化+并查集
- Java AIO 编程
- 按钮右对齐_Python Tkinter Button按钮
- Java IO(BIO, NIO, AIO) 总结
- 剑与轮回找回服务器,剑与轮回自由之都1服开服时间表_剑与轮回新区开服预告_第一手游网手游开服表...
- 实践分享丨物联网操作系统中的任务管理
- 互联网公司分批返岗;Safari 将封杀超过398天的 HTTPS 证书;TypeScript 3.8 发布 | 极客头条...
- Java面试题详解二:java中的关键字
- 如何使用Guitar Pro在乐谱播放时切换效果器音色?
- 快速掌握消息队列MQ最内核,图文并茂详解
- ubuntu下安装matlab及配置vot-toolkit
- Python的数学计算库scipy介绍
- 小猫钓鱼纸牌游戏java_java实现纸牌游戏-小猫钓鱼算法
- 计蒜客蓝桥杯模拟赛---青出于蓝而胜于蓝
- PHP使用FPDF的多字体解决
- oracle直接路径读,direct path read直接路径读
- 【架构风格】架构风格演进和领域架构分类
热门文章
- FastDFS文件上传和下载流程
- idea 拉取分支代码
- python(numpy,pandas3)——numpy索引
- vue+axios天气查询——天知道效果展示及源码分析
- 2.1.4 什么是ASCII码?汉字的表示和编码是怎样的?
- ios 点击出现另外一套tabbar_iOS开发中TabBar再次点击实现刷新效果
- js对文字批注_实现SpreadJS的自定制批注
- 事务里面捕获异常_三问Spring事务:解决什么问题?如何解决?存在什么问题?...
- centos 安装jdk_Centos7下安装一个或多个tomcat7完整
- 设计模式的理解:享元模式 (Flyweight)