Standardowy przycisk Flex nie zezwala na etykietowanie tekstu na zawijanie wyrazów. Czytam w Internecie, że istnieją pewne nieudokumentowane sposoby radzenia sobie z tym, ale nie udało mi się je uruchomić. Gdyby ktoś mógł wysłać mi mały przykład, byłoby świetnie!Adobe Flex: Zawijanie słów w etykiecie przycisku
Odpowiedz
Zasadniczo musisz ustawić kilka chronionych właściwości w formancie TextField przycisku (multiLine i wordWrap), czego nie możesz zrobić bez rozszerzenia klasy Button. Więc jeśli utworzyć nową klasę, która rozciąga się przycisk i ustawia te właściwości i ma trochę pracy, by wszystko mierzyć poprawnie:
package
{
import flash.text.TextFieldAutoSize;
import mx.controls.Button;
public class WrappingButton extends Button
{
public function WrappingButton()
{
super();
}
override protected function createChildren():void
{
super.createChildren();
textField.multiline = true;
textField.wordWrap = true;
textField.autoSize = TextFieldAutoSize.CENTER;
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
textField.y = (this.height - textField.height) >> 1;
height = textField.height + getStyle("paddingTop") + getStyle("paddingBottom");
}
}
}
... można spaść, że kontrola w swojej MXML tak:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*">
<local:WrappingButton label="The quick brown fox jumped over the lazy dog." width="100" paddingTop="10" paddingBottom="10" />
</mx:Application>
Mam nadzieję, że pomoże! Po powrocie z pytaniami, jeśli je masz.
Świetny komponent, ale próbuję go użyć jako niestandardowego renderera elementów, a updateDisplayList() jest wywoływana w nieskończonej pętli. – Laramie
Jak mogę użyć tego samego komponentu w programie Flash Builder 4.6? Gdy dostaję błąd na 'textField'" Dostęp do niezdefiniowanej właściwości " – abi1964
Próba korzystania
Używam
<s:Button label="Top two states result" height="100%" width="100%" icon="@Embed(source='assets/bar.png')" chromeColor="#A3F4FD"/>
i robi etykietę wielu linii.
Awesome, działa jak urok! – Ska
Powinieneś iść dalej i przyjąć odpowiedź Christiana Nunciato. – Panzercrisis