【问题标题】:what's the difference between view and viewgroup for the method onMeasure()?onMeasure() 方法的视图和视图组有什么区别?
【发布时间】:2016-11-06 23:05:04
【问题描述】:
我正在学习一个自定义组件,我发现view和viewgroup的方法onMeasure()有些不同。例如有人调用super.onMeasure,有人在最后使用setMeasuredDimension。区别在哪里? measureChildren() 是什么意思?
这是我第一次来这个社区,希望能得到我想要的答案,谢谢。
【问题讨论】:
标签:
android
android-custom-view
viewgroup
onmeasure
【解决方案1】:
super.onMeasure()
当您想将自定义组件的测量留给您要扩展的超类时使用。例如,假设您正在为多色文本构建自定义 TextView。您真的不想覆盖 TextView 的 onMeasure() 实现,因为您没有处理文本的宽度和高度。所以你可以打电话给super.onMeasure(),然后把测量留给TextView。
setMeasuredDimension()
如果您必须覆盖onMeasure(),您可以使用setMeasuredDimension() 告诉android 视图渲染系统最终计算出的自定义视图的宽度和高度。视图系统将使用它来渲染您的视图。
measureChildren()
它告诉这个ViewGroup 的孩子使用给定的MeasureSpec 来衡量自己。
一个很好的讨论here。