2009-10-12 107 views
5

一旦我设置了柔性标签上的widthpercentWidth属性,是否有办法将宽度重置为其默认值(即文本宽度加上填充)?设置明确的宽度后,将柔性标签宽度重置为“自动”?

我使用标签作为渲染器。在某些情况下,我希望它自动调整文本大小,在其他情况下,我希望它是容器的百分比宽度。很明显,我可以使用两个单独的标签,每个标签都用于上述情况,但我很好奇是否可以将标签重置为默认行为。

回答

8
label.width = NaN; 
//not sure if the following lines are required 
label.invalidateSize(); 
label.width = label.measuredWidth; 

flex livedocs

当设置的部件的特定的高度和宽度,Flex不会调用measure()方法,即使你显式调用invalidateSize()方法。也就是说,如果组件的explicitWidth属性或explicitHeight属性为NaN,Flex将仅调用measure()方法。

+0

这为我工作,不需要invalidateSize调用或分配measuredWidth。我曾看过这篇文档的引用,但我还没有(也可能没有)理解宽度和/或percentWidth属性和explicitWidth之间的关系。 – 2009-10-13 15:53:28

+0

我的理解是'explicitWidth'是组件可见部分的宽度。如果实际宽度大于此值,则会出现滚动条。它是组件明确指定的宽度(由程序员)。如果设置宽度,则将相同的值分配给explicitWidth属性,并且如果指定percentWidth,则将计算的宽度(基于父级的大小)用作explicitWidth。 – Amarghosh 2009-10-14 04:44:18

1

将宽度设置为未定义:

yourLabelId.width =未定义;

+3

由于width未被键入为*,所以undefined实际上会被转换为null。当你的新高度传递到它的存储位置时,它可能最终成为NaN(我相信explicitWidth)。 – joshtynjala 2009-10-12 19:08:23

+0

将我的宽度设置为undefined似乎可行,但我同意NaN更干净(我正在慢慢学习ActionScript类型系统)。如果这个答案被编辑(s/undefined/NaN/g),我会让它“接受”,因为它让我快速运行。 – 2009-10-13 15:49:16

+0

作为一个附注,值得一提的是,如果我设置了percentWidth,那么将宽度设置为NaN不起作用。我最初修改的属性必须设置为NaN以将标签重置为其默认(测量)宽度。这可能很明显,但可能会让人困惑。 – 2009-10-13 15:57:36