自定义控件基础 之 3.4 ViewGroup的测量 & 3.5 ViewGroup的绘制

ViewGroup的测量

之前分析中说了,ViewGroup会去管理其子View,其中一个管理项目就是负责子View的显示大小。当ViewGroup的大小为wrap_content时,ViewGroup就需要对子View进行遍历,以便获得所有子View的大小,从而来决定自己的大小。而在其他模式下则会通过具体的指定值来设置自身的大小。   ViewGroup在测量时通过遍历所有子View,从而调用子View的Measure方法来获得每一个子View的测量结果,前面所说的对View的测量,就是在这里进行的。   当子View测量完毕后,就需要将子View放到合适的位置,这个过程就是View的Layout过程,同样是使用遍历来调用子View的Layout方法,并制定其具体显示的位置,从而来决定其布局位置。   在自定义ViewGroup时,通常会去重写onLayout()方法来控制其子View显示位置的逻辑。同样,如果需要支持wrap_content属性,那么它还需要重写onMeasure()方法,这点与View是相同的。

ViewGroup的绘制

ViewGroup通常情况下不需要绘制,因为它本身就没有需要绘制的东西,如果不是指定了ViewGroup的背景颜色,那么ViewGroup的onDraw()方法都不会被调用。但是,ViewGroup会调用dispatchDraw()方法来绘制其子View,其过程同样是通过遍历所有子View,并调用子View的绘制方法来完成绘制工作。


内容参考自Blankj

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏郭霖

Android实现图片滚动控件,含页签功能

首先题外话,今天早上起床的时候,手滑一下把我的手机甩了出去,结果陪伴我两年半的摩托罗拉里程碑一代就这么安息了,于是我今天决定怒更一记,纪念我死去的爱机。 如果你...

33310
来自专栏Sorrower的专栏

Android绘制(一):来用shape绘出想要的图形吧!

1954
来自专栏Jack的Android之旅

淘宝开源库VLayout实践

最近淘宝出了vlayout,刚开始看淘宝的文档的时候还是有点懵,后来自己也总结规划了一下,写了一个比较好看的demo,顺便在这里总结一下。

2042
来自专栏五毛程序员

ViewPager实现广告自动轮播核心代码(Handler+Thread)

3375
来自专栏何俊林

Android View框架总结(六)View布局流程之Draw过程

View的Layout时序图 ViewRootImpl.performTraversals过程 ViewRootImpl.performDraw过程 View....

2326
来自专栏李蔚蓬的专栏

Material Design 实战 之第二弹——滑动菜单详解&实战

本模块共有六篇文章,参考郭神的《第一行代码》,对Material Design的学习做一个详细的笔记,大家可以一起交流一下:

1253
来自专栏Android开发指南

2.ui

4949
来自专栏Android干货

Android项目实战(十四):TextView显示html样式的文字

4408
来自专栏学海无涯

Android开发之自定义View(二)

在 Android开发之自定义View(一)中,讲解了最复杂的一种自定义View,本次将剩下的两种讲完~~~ go,go,go 继承原有的控件,在原有控件基础上...

3338
来自专栏学海无涯

Android开发之ListView使用经验分享

在Android开发中,ListView是使用最广泛的组件之一,虽然谷歌推出了RecycleView,但是很多项目中依旧在使用ListView,本文将总结一下使...

3206

扫码关注云+社区

领取腾讯云代金券