摘要: LayoutInflate主要用于加载布局,包括在Activity中调用setContentView(),方法内部其实也是用LayoutInflate来实现的。 基本用法:两句语句都可以获取到LayoutInflater的实例//两种初始化方式 LayoutInflater inflater = L 阅读全文
posted @ 2019-09-10 17:23 李艳艳665 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 组合控件的意思就是,我们并不需要自己去绘制视图上显示的内容,而只是用系统原生的控件就好了,我们将几个系统原生的控件组合到一起,例如最常见的 标题栏。 新建一个view_title.xml布局文件,写我们标题栏的布局<?xml version="1.0" encoding="utf-8"?><Line 阅读全文
posted @ 2019-09-10 17:23 李艳艳665 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 一般来说,需要写前三个构造函数。那么问题来了,init的内容写在哪里呢? 通常情况下,应该这么写 第一个构造函数,在java代码中new这个view的时候会被调用第二个构造函数,在xml中引用这个view的时候会被调用(就是刚刚发生的情况了)。AttributeSet对应的就是设置的属性值集合第三个 阅读全文
posted @ 2019-09-10 17:23 李艳艳665 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 有以下几个步骤: 自定义一个CustomView(extends View )类编写values/attrs.xml,在其中编写styleable和item等标签元素在布局文件中CustomView使用自定义的属性(注意namespace)在CustomView的构造方法中通过TypedArray获 阅读全文
posted @ 2019-09-10 17:23 李艳艳665 阅读(1118) 评论(0) 推荐(0) 编辑
摘要: 重写之前先了解MeasureSpec的specMode,一共三种类型: EXACTLY(精确模式):父容器能够计算出自己的大小,一般是设置为match_parent或者固定值的自定义控件。AT_MOST(至多不超过模式):父容器指定了一个大小, View 的大小不能大于这个值,也就是父容器不能够直接 阅读全文
posted @ 2019-09-10 17:11 李艳艳665 阅读(1501) 评论(0) 推荐(0) 编辑