LinearLayout.onMeasure--事例说明

将LinearLayout中代码Copy了一份存在本地,然后再在里面加了几个子View,打印出来LinearLayout.onMeasure中的那些变量的值

  1. 如下图所示,LinearLayout中有4个子View

示例1 打印出来的值为:

示例1打印出的值 其中可以看出由于最顶层的LinearLayout设置的是65dip,换算到本人手机上的是65*3=195px,由于自定义的LinearLayout的layout_height设置的是wrap_content,所以得到的MeasureSpec.Mode为AT_MOST,而在第一个TextView的layout_height设置的是wrap_content,所以在第一个TextView进行measure的时候会根据getChildMeasureSpec来进行子View的MeasureSpec的计算,因为是AT_MOST的,所以它的宽度最大只能是195,与父View相同。而第二个和第三个View的height为0,是因为在getChildMeasureSpec中,父View的MeasureSpec.Mode为AT_MOST,而子View的lp.height是MATCH_PARENT,所以计算的时候会得到0.而最后一个子View,是因为layout_height指定了是1920dip,所以在getChildMeasureSpec的时候,会直接把1920dip转换成size,然后Mode为MeasureSpec.EXACTLY,所以在获取大小的时候,得到的是5760。

  1. 第二种情况和上面的情况只变了一个地方,是LinearLayout的wrap_content变成了match_parent,

示例2

打印出来的值为:

示例2打印出的值

可以看到和上面的区别只是MeasureSpec.Mode从AT_MOST变成了EXACTLY

  1. 有weight的情况

设置Weight属性

打印出的结果:

Paste_Image.png

其中Delta在源码中表示超出的部分,shared代表着这个View还需要分担多少高度

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏何俊林

Android View框架总结(三)View工作原理

测量/布局/绘制顺序 如何引起View的测量/布局/绘制? PerformTraversales() ViewRoot View工作基本流程 SpecMod...

1996
来自专栏jianhuicode

Android的FixScrollView自定义控件

需求模仿腾讯课堂视频播放详情页面,效果如图: 1外层滚动控件到顶部,内层控制滚动 2内层滚动到顶部,外层控制滚动 835108-201703311117091...

2268
来自专栏葡萄城控件技术团队

Spread for Windows Forms高级主题(2)---理解单元格类型

理解单元格类型基本信息 Spread支持几十种单元格类型,如复选框单元格、日期时间单元格、或者一个简单的文本单元格。单元格类型可以对单独的单元格、列、行、一个单...

2018
来自专栏happyJared

IDEA快捷键拆解系列(三):Edit篇

  以下是关于Edit导航项及其每一子项的拆解,其中,加粗部分的选项是博主认为比较重要的。

1102
来自专栏KK的小酒馆

初识自定义控件Android应用界面开发

自定义控件是个大坑,并不能在此以偏概全阐述出它的精髓,笔记仅作为一方面的了解作用。

911
来自专栏何俊林

Android View框架总结(二)View焦点

前言:今天七夕节,笔者先祝大家七夕快乐,无论是否有女朋友,去吃一吨好吃的,年轻多努力才是王道。如果觉得笔者一直以来写的文章,有让你收获那么一点点。可以推荐此公众...

2328
来自专栏全栈之路

egret知(填)识(坑)点集

替换控件,方法为dragonBones.Slot.setDisplay(dispaly:any),但是并不是每一次都能成功设置上,display也并不是一直有值...

3121
来自专栏james大数据架构

SwitchButton 开关按钮 的多种实现方式

刚开始接触开关样式的按钮是在IOS系统上面,它的切换以及滑动十分帅气,深入人心。 所谓的开关按钮,就是只有2个状态:on和off,下图就是系统IOS 7上开关按...

3107
来自专栏Android 开发者

[译] 论 Android 中 Span 的正确打开方式

2225
来自专栏肖蕾的博客

第三章:动画(Animation)动画是什么?原理?Animation图片裁剪方法StateTime

1.定义:管理游戏中动画实现的类,实现只需要两个参数,时间:duration,另外则是TextureRegion 即图片。 2.用途:管理动画,设置随即播放模...

1014

扫码关注云+社区

领取腾讯云代金券