2009-10-12 12 views
5

Po ustawieniu właściwości width lub percentWidth na etykiecie elastycznej, czy istnieje sposób zresetowania szerokości do wartości domyślnej (tj. Szerokości tekstu i dopełnienia)?Resetowanie szerokości etykiety flex do "auto" po ustawieniu jawnej szerokości?

Używam etykiety jako mechanizmu renderowania. W niektórych przypadkach chciałbym, aby był automatycznie dopasowywany do tekstu, a w innych przypadkach powinien to być procent szerokości kontenera. Oczywiście mógłbym użyć dwóch oddzielnych etykiet, po jednym dla każdego z powyższych przypadków, ale jestem ciekawy, czy możliwe jest zresetowanie etykiety do domyślnego zachowania.

Odpowiedz

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

Od flex livedocs

Po ustawieniu określonej wysokości i szerokości elementu, Flex nie wywołać metodę środek(), nawet jeśli jawnie wywołać metodę invalidateSize(). Oznacza to, że Flex wywołuje metodę measure() tylko wtedy, gdy właściwość explicitWidth lub explicitHeight komponentu to NaN.

+0

To zadziałało dla mnie, bez potrzeby wywoływania invalidateSize lub przypisania do mierzonejWidth. Widziałem ten cytat z dokumentacji, ale jeszcze nie (i nadal prawdopodobnie nie) rozumiem związek między właściwościami width i/lub percentWidth a expliciteWidth. –

+0

Rozumiem, że 'explicitWidth' to szerokość widocznej części komponentu. Paski przewijania pojawią się, jeśli rzeczywista szerokość jest większa niż ta wartość. Jest to wyraźnie określona szerokość (przez programistę) komponentu. Jeśli ustawisz szerokość, ta sama wartość zostanie przypisana do właściwości explicitWidth, a jeśli zostanie określona wartość percentWidth, wyliczona szerokość (w oparciu o rozmiar rodzica) zostanie użyta jako jawnaWidth. – Amarghosh

1

ustawić szerokość do zdefiniowana:

yourLabelId.width = nieokreślone;

+3

Ponieważ szerokość nie jest wpisana jako *, undefined zostanie przekonwertowany na wartość null. Może to w końcu być NaN do czasu, gdy twój nowy wzrost zostanie przeniesiony do miejsca, w którym jest przechowywany (expliciteWidth, jak sądzę). – joshtynjala

+0

Ustawienie mojej szerokości na undefined wydawało się działać, ale zgadzam się, że NaN jest czystszy (powoli uczę się systemu typu ActionScript). Jeśli ta odpowiedź zostanie zmieniona (s/undefined/NaN/g), zostawię ją "zaakceptowaną", ponieważ działa ona szybko i działa. –

+0

Na marginesie warto wspomnieć, że jeśli ustawiłem percentWidth, ustawienie szerokości NaN nie przyniesie efektu. Właściwość, którą pierwotnie zmodyfikowałem, musi być ustawiona na NaN, aby przywrócić domyślną szerokość etykiety (domyślną). To chyba oczywiste, ale potencjalnie mylące. –

Powiązane problemy