0

我有一个场景:

ViewA extendsViewB,覆盖onMeasure()和调用setMeasuredDimension()。ViewA 将其宽度设置为,10dp而 ViewB 将其宽度设置为20dp。现在,如果我super.getMeasuredWidth()在末尾从 ViewB调用onMeasure()以获取 ViewA 的宽度,我会得到20dp. 原因很明显,当 ViewA 完成自我测量时, ViewB 调用setMeasuredDimension()又覆盖旧值。

现在显而易见的解决方案是覆盖相关方法。我的问题是,在 custom中覆盖setMeasuredDimension()or是一种好习惯。getMeasuredWidth()getMeasuredHeight()View

4

1 回答 1

1

愚蠢的我,解决方案很简单。在onMeasure()ViewB 中,我立即收集了 ViewA 的宽度和高度,然后调用setMeasuredDimension()

super.onMeasure(wSpec, hSpec);
final int superWidth = super.getMeasuredWidth();
final int superHeight = super.getMeasuredHeight();
setMeasuredDimension(w, h);

// use superWidth and superHeight here

就是这样。

于 2013-10-25T09:43:06.080 回答