在android碰撞中做draw()和measure()方法吗?

时间:2011-06-01 07:21:36

标签: android

我只是在查看如何在android中绘制视图,而我正在阅读开发人员网站上提供的文档。我理解其中的大部分内容,除了以下问题:

设置问题的背景

当一个视图自己绘制时,它将首先调用自身及其所有子节点上的度量。其中它将根据其子节点强制对其子节点强制对其子节点进行约束。

问题

现在考虑我正在绘制一个标签..并且出于某种原因,其父级对其施加的约束仅允许它在60px x 60px空间中绘制。我制作了这个标签,这意味着它是一个自定义视图。现在我正在编写draw方法的代码。在这里,我在标签上绘制文字,其中包含5个字符,文本大小为20.现在,对于要绘制的文本,我总共需要(20 * 5)100px,但我只能绘制60px宽度.. 如果测量方法在返回之前不考虑绘制方法吗?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

绘制方法不考虑需求。 OnMeasure就是这样做的。在onMeasure中,您将返回所需的大小。这是组件及其父母“协商”规模的地方。当然,你总是可以得到足够的空间。但这适用于所有其他组件 - giva一个TextView 5px,它将是5 px。 OnDraw就是为了做到这一点 - 画画。所有大小的计算都应该在onMeasure中进行。较新的Android版本具有在onMeasure中返回的View.MEASURED_STATE_TOO_SMALL(API> = 11),表示您的空间不足:)