在android冲突中执行draw()和measure()方法



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

设置问题的上下文

当一个视图绘制自己时,它将首先调用它自己及其所有子对象的measure。。其中它将基于其父母对其施加的约束来对其子女施加约束。

问题

现在想想我在画一个标签。。由于某种原因,其父对象对其施加的约束只允许在60px x 60px的空间中绘制。我制作了这个标签,意思是这是一个自定义视图。现在我正在为draw方法编写代码。在这里,我正在标签上绘制文本,标签上有5个字符,文本大小为20。现在,对于要绘制的文本,我总共需要(20*5)100px,但我只能绘制60px的宽度。。measure方法在返回之前是否应该不考虑draw方法?

提前谢谢。

绘制方法没有考虑到需求。OnMeasure就是这样做的。在OnMeasure中,您可以返回您想要的尺寸。这是组件及其父母"协商"大小的地方。当然,你最终可能总是空间不足。但这对所有其他组件都适用——giva一个TextView 5px,它将是5 px。OnDraw就是要做到这一点——画画。所有大小的计算都应该已经在onMeasure中完成。较新的Android版本有View。MEASURED_STATE_TO_SMALL(API>=11),在onMeasure中返回并指示空间不足:)

相关内容

最新更新