2012-06-25 91 views
0

我有一個自定義toggleButtonBar類,允許在按鈕上放置標籤,但是,我希望將標籤設置爲多行。我不善於擴展默認組件。有沒有人能幫助我?在自定義togglebuttonbar內創建多行標籤

package com.vit2print.plugin.transvit.tools 
{ 
    import mx.controls.Button; 
    import mx.controls.ToggleButtonBar; 
    import mx.core.IFlexDisplayObject; 

    public class IconToggleButtonBar extends ToggleButtonBar 
    { 
     [Inspectable(enumeration="left,right,top,bottom", defaultValue="left")] 
     public var labelPlacement:String = "left"; 

     override protected function createNavItem(label:String, icon:Class=null):IFlexDisplayObject { 
      var b:Button = Button(super.createNavItem(label, icon)); 
      b.labelPlacement = labelPlacement; 
      return b; 
     } 
    } 
} 

任何幫助,將不勝感激。

+0

您已經標記了您的問題'Flex4',但您擴展了'mx' ToggleButtonBar。哪一個?如果你可以使用Spark組件,這將會容易得多。 – RIAstar

+0

編輯:對不起,我不能使用火花組件 – vincent

+0

我只需要15分鐘。我的時間寫給你一個答案,你是否同時將該評論從「是」改爲「否」,還是我在做夢? – RIAstar

回答

1

如果您可以使用Spark組件,則可以通過ButtonBar按鈕的自定義外觀完成此操作。當剝皮的按鈕欄,你必須創建4個皮膚雖然:

  • 一個用於按鈕欄本身
  • 一個第一個按鈕
  • 一箇中間按鈕
  • 一個最後按鈕

除非所有按鈕看起來都一樣,在這種情況下,對於所有三種按鈕只需要一個外殼。

首先通過複製默認的Spark ToggleButtonSkin爲按鈕創建三個(或一個)外觀。在FlashBuilder嚮導,應該是這樣的:

enter image description here

向下滾動至底部,並找到ID labelDisplay標籤標記。它的masDisplayedLines屬性設置爲1。將其刪除或將其設置爲對您的用例更方便的值。

現在通過複製默認的Spark ButtonBarSkin爲ButtonBar本身創建一個皮膚。找到三個按鈕工廠,並用您剛剛創建的按鈕外觀替換skinClass樣式。

<fx:Declarations> 
    <fx:Component id="firstButton"> 
     <s:ButtonBarButton skinClass="net.riastar.skins.MyButtonBarFirstButtonSkin" /> 
    </fx:Component> 

    <fx:Component id="middleButton" > 
     <s:ButtonBarButton skinClass="net.riastar.skins.MyButtonBarButtonSkin" /> 
    </fx:Component> 

    <fx:Component id="lastButton" > 
     <s:ButtonBarButton skinClass="net.riastar.skins.MyButtonBarLastButtonSkin" /> 
    </fx:Component> 
</fx:Declarations> 

現在將此皮膚應用到您的ButtonBar並且您已全部設置。

<s:ButtonBar dataProvider="{dp}" skinClass="net.riastar.so.MyButtonBarSkin" width="200" /> 

記住,一般與Spark組件:如果你想讓他們看看不同沒有真正改變/自定義自己的行爲,用剝皮,而不是自定義組件。