View从创建到显示到屏幕需要经历几个过程:

measure -> layout -> draw

measure过程:计算view所占屏幕大小
layout过程:设置view在屏幕的位置
draw过程:绘制view


继承自view的控件的layout过程

layout过程相对measure过程比较简单,其作用是将view绘制到合适的位置

layout方法:

/* final 标识符 , 不能被重载 , 参数为每个视图位于父视图的坐标轴
* @param l Left position, relative to parent
* @param t Top position, relative to parent
* @param r Right position, relative to parent
* @param b Bottom position, relative to parent
*/
public final void layout(int l, int t, int r, int b) {
boolean changed = setFrame(l, t, r, b); //设置每个视图位于父视图的坐标轴
if (changed || (mPrivateFlags & LAYOUT_REQUIRED) == LAYOUT_REQUIRED) {
if (ViewDebug.TRACE_HIERARCHY) {
ViewDebug.trace(this, ViewDebug.HierarchyTraceType.ON_LAYOUT);
} onLayout(changed, l, t, r, b);//回调onLayout函数 ,设置每个子视图的布局
mPrivateFlags &= ~LAYOUT_REQUIRED;
}
mPrivateFlags &= ~FORCE_LAYOUT;
}

可见,当父元素呈现时候,会调用子view的layout方法,把子view放到合适的位置,layout中回调子
view的onLayout方法,实现具体定制

一般情况下,继承自view的控件不需要重写onLayout方法

最新文章

  1. hdu2588 GCD (欧拉函数)
  2. CentOS 7.1编译安装PHP7
  3. 编写base64图片文件
  4. 作业2.3 Github注册过程
  5. string类find函数返回值判定
  6. USB的四种传输类型
  7. 通过javascript完成分页查询功能
  8. 转 scrollLeft,scrollWidth,clientWidth,offsetWidth之完全详解
  9. jQuery 1.10.2 and 2.0.3 Released
  10. Apriori算法介绍(Python实现)
  11. 基于opencv的车牌识别系统
  12. 简洁灵活的前端框架------BootStrap
  13. day23_雷神_git
  14. Imbalanced Array CodeForces - 817D (思维+单调栈)
  15. .net core Identity集成IdentityServer4 (1)基本操作
  16. hash_map
  17. springboot用@Autowired和@PostConstruct注解把config配置读取到bean变成静态方法
  18. 如何配置windows定时任务
  19. vue.js 2.0 官方文档学习笔记 —— 01. vue 介绍
  20. SpringBoot多跨域请求的支持(JSONP)

热门文章

  1. 基于visual Studio2013解决算法导论之005原地随机排列数组
  2. cocos2d-x游戏开发系列教程-坦克大战游戏之所有坦克之间的碰撞检测
  3. Jquery progressbar通过Ajax请求获取后台进度演示
  4. Swift - 网络请求报App Transport Security has blocked a cleartext错
  5. ORA-01403: no data found
  6. Cocos2dx3.1 获取当前系统时间
  7. 2014 I/O归来:Google连接一切
  8. Github-Client(ANDROID)开源之旅(四) ------ 简介Roboguice
  9. C#加密与解密
  10. 改变Emacs下的注释代码方式以支持当前行(未选中情况下)的注释/反注释