我最近刚刚创建了一个自定义视图组来测试在扩展视图或视图组并覆盖super.onMeasure()
和{{1}时是否确实需要包含super.onLayout()
或onMeasure()
}} 方法。我发现你不需要包含onLayout()
或super.onMeasure()
,一切都还可以。
那么,如果是这种情况,super.onLayout()
和super.onMeasure()
究竟是什么用,我为什么要把它称为开头?
答案 0 :(得分:1)
检查源代码&的javadoc。这回答了在大多数情况下是否要调用super
的问题。
您要替换默认行为还是继承它?替换=不要打电话。继承=调用它。
例如,除默认情况外,某些视图可能只需要做一些工作,它们可以调用super&然后尽力而为。 那说:
onLayout
是abstract
&因此是空的。调用super.onLayout
仍然合法,但实际上没有可执行的代码。所以不要打扰。onMeasure
默认为View
,setMeasuredDimension()
基于getSuggestedMinimumWidth/Height()
,super.onMeasure()
大部分时间都不是您要在视图组中继承的行为,因为您可能会根据您的孩子调整您的测量值。您不应该做的唯一事情是在代码设置测量值后调用ThingA.ts
。这会破坏你的工作。