ViewGroup定义

在api中是这么描写叙述ViewGroup的:A ViewGroup is a special view that can contain other views. 依据意思我们能够明确。在ViewGroup中能够包括其它UI控件。包括我们的自己定义控件

优势及用处

我们了解UI控件最大的目的是使用它。而要了解控件。必须明确该控件的长处。

ViewGroup在Android的UI控件中相对复杂,它的自己定义程度非常高。借助declare-styleable自己定义控件属性,差点儿控件的各个方便都能够控制到。

了解到这些长处之后,你会想到哪里有ViewGroup的用武之地呢?考虑考虑,我会在文章最后说说我的理解。

绘制流程

ViewGroup中有两个及其重要的回调方法

  • onMeasure(int widthMeasureSpec, int heightMeasureSpec)
  • onLayout(boolean changed, int left, int top, int right, int bottom)

onMeasure

Ask all children to measure themselves and compute the measurement of this layout based on the children.

onLayout

Position all children within this layout.

以上是api中对两个方法的解释。真实使用中onMeasure和onLayout都可能被调用多次。依据log我们会发现onLayout都是在onMeasure之后才调用,这也证实了api的说法,ViewGroup在画图之前先把数值算好,然后依据相应的值把控件绘制到相相应的地方。

getMeasuredWidth

这种方法在这里单独拿出来说一下。在onMeasure方法中计算控件存放位置时。我们会用到getMeasuredWidth()和getMeasuredHeight(),这里得到的值包含padding,不包含margin,在计算的时候要注意

最新文章

  1. replace截取字段
  2. 把自己主要在做的几个工程都传到了GitHub上
  3. NSArray(二) 、 NSMutableArray 、 NSSet 、 NSMutableSet
  4. Unity入门知识
  5. Eclipse中新建jsp文件访问页面时乱码问题
  6. [leetcode]_Search Insert Position
  7. linux常用命令之ln
  8. OS X background process
  9. 【19道XSS题目】不服来战!
  10. 201521123001《Java程序设计》第9周学习总结
  11. java:编程比赛中有用的方法整理(一)数组
  12. Celery - 一个懂得 异步任务 , 定时任务 , 周期任务 的芹菜
  13. Redis 单机部署
  14. 浅谈ASP.NET框架
  15. spring的设计模式
  16. js中Date与timestamp(时间戳)的相互转换
  17. 在 windows 上安装免安装版的mysql
  18. AngularJS $observe $watch
  19. ubuntu set/unset proxy
  20. srv.exe蠕虫病毒~

热门文章

  1. 【基础篇】EditText的一些属性设置
  2. VMware Vsphere 6.0安装部署 总体部署架构
  3. 03008_使用JDBC对分类表进行增删改查操作
  4. 【Codeforces Round #427 (Div. 2) D】Palindromic characteristics
  5. ArcGIS Api For Flex 动态画点和线
  6. 正确理解Widget::Widget(QWidget *parent) :QWidget(parent)这句话(初始化列表中无法直接初始化基类的数据成员,所以你需要在列表中指定基类的构造函数)
  7. 10.查看npm安装信息和版本号
  8. 你真的懂Flask中浅谈蓝图Blueprint吗?
  9. Solr 倒排索引
  10. Jenkins学习总结(1)——Jenkins详细安装与构建部署使用教程