2009-10-12 1 views
5

Как только я установил свойство width или percentWidth на этикетке flex, существует ли способ сбросить ширину до значения по умолчанию (т. Е. Ширины текста и заполнения)?Сбросить ширину этикетки Flex до «auto» после установки явной ширины?

Я использую метку в качестве средства визуализации. В некоторых случаях я хотел бы, чтобы он автоматически менялся с текстом, а в других случаях я хотел бы, чтобы это была процентная ширина его контейнера. Очевидно, что я мог бы использовать две отдельные метки, по одному для каждого из вышеуказанных случаев, но мне любопытно, можно ли сбросить ярлык по умолчанию.

ответ

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

От flex livedocs

При установке определенную высоту и ширину компонента, Flex не вызывается метод измерения(), даже в случае явного вызова метода invalidateSize(). То есть Flex только вызывает метод measure(), если свойство explicitWidth или свойство explicitHeight компонента NaN.

+0

Это сработало для меня, не требуя вызова invalidateSize или назначения для measuredWidth. Я видел эту цитату из документов, но я еще не понял (и, вероятно, не знаю) отношения между свойствами width и/или percentWidth и explicitWidth. –

+0

Я понимаю, что 'explicitWidth' - это ширина видимой части компонента. Полосы прокрутки появятся, если фактическая ширина больше этого значения. Это явно заданная ширина (программистом) компонента. Если вы установите ширину, то такое же значение присваивается свойству explicitWidth, и если вы укажете percentWidth, расчетная ширина (в зависимости от размера родителя) будет использоваться как explicitWidth. – Amarghosh

1

Установите ширину, чтобы не определено:

yourLabelId.width = не определено;

+3

Поскольку ширина не набирается как *, undefined фактически преобразуется в нуль. Наверное, на самом деле это может быть NaN к тому времени, когда ваша новая высота будет передана туда, где она хранится (explicitWidth, я полагаю). – joshtynjala

+0

Установка моей ширины в undefined, казалось, сработала, но я согласен с тем, что NaN чище (я медленно изучаю систему типа ActionScript). Если этот ответ будет отредактирован (s/undefined/NaN/g), я оставлю его «принятым», так как он быстро запустил меня. –

+0

В качестве примечания, стоит упомянуть, что если я установил значение процента, то установка ширины на NaN не будет иметь никакого эффекта. Первоначально свойство, которое я модифицировал, должно быть установлено в NaN для сброса метки по умолчанию (измеренной) ширины. Это, вероятно, очевидно, но, возможно, сбивает с толку. –