Android ViewGroup使用小结

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,在计算的时候要注意

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值