2009-10-31 15 views
6

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

+0

Powinieneś iść dalej i przyjąć odpowiedź Christiana Nunciato. – Panzercrisis

Odpowiedz

15

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.

+1

Świetny komponent, ale próbuję go użyć jako niestandardowego renderera elementów, a updateDisplayList() jest wywoływana w nieskończonej pętli. – Laramie

+0

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

4

Próba korzystania &#13;

Używam

<s:Button label="Top two&#13;states result" height="100%" width="100%" icon="@Embed(source='assets/bar.png')" chromeColor="#A3F4FD"/> 

i robi etykietę wielu linii.

+0

Awesome, działa jak urok! – Ska

Powiązane problemy