ViewGroup和LayoutMnager自定义的相似之处

1、LayoutManager的流程
实现generateDefaultLayoutParams方法
主体方法:onLayoutChildren
具体方法

detachAndScrapAttachedViews 回收view到ScrapCache空间,这是为了防止重复加载控件
getViewForPosition 获取子view
addView添加子view
measureChildWithMargins 测量子view
getWidth获取父宽度
getHeight获取父高度
getDecoratedMeasuredWidth获取测量的宽度
getDecoratedMeasuredHeight获取测量的高度
layoutDecoratedWithMargins 将带margin的宽度和高度放置到父控件中

2、ViewGrounp流程
实现generateDefaultLayoutParams方法
主题方法一:onMeasure测量父控件,子控件,设置父控件的宽高

MeasureSpec.getMode父控件宽高的模式
MeasureSpec.getSize 父控件的宽高
getChildAt 获取子view
measureChildWithMargins 测量带margin的子view
measuredWidth获取测量的宽度
measuredHeight获取测量的高度
setMeasuredDimension设置父控件的宽高

主体方法二:onLayout,用于具体的放置子view

getChildAt获取子view
measuredWidth获取子view的测量宽度
measuredHeight获取子view 的测量高度
getLayoutParams获取子view的布局参数
layout通过传入子view的上下左右的值,放置子view

查看这两个自定义,其实是相似的都是通过测量子view,然后将子view在父控件中放置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值