2010-12-21 124 views
0

我有一個帶有可變長度標籤文本的按鈕。我有一個用戶設置,可以打開或關閉此按鈕上的標籤文本。Flex:隱藏(或刪除)標籤文本而不更改按鈕大小

我該如何執行此操作?

注意:該按鈕的背景具有漸變色。

我試過使用BlendMode.LAYER,沒有運氣;

我嘗試使用Button.resizeHandler

private function resizeHandler(event:ResizeEvent):void 
    { 
     if (event.oldWidth > this.width) 
      this.width = event.oldWidth; 
     if (event.oldHeight > this.height) 
      this.height = event.oldHeight; 
    } 

但如果初始UserSetting值爲true它只是工作。

嵌入字體怎麼樣?我不知道如何將它應用到按鈕

回答

0

您可以擴展mx.controls.Button以添加顯示/隱藏標籤功能。文本字段是受保護的屬性,因此您只需在函數中設置開啓/關閉的可見性即可。讓Flex自己衡量一切正確。

如果您想在文本打開或關閉時增大/縮小按鈕,還可以設置按鈕寬度。您將不得不根據文本字段寬度來計算寬度。

+0

最後我放棄了按鈕本身的工作。我擴展了一個畫布,並放置兩個按鈕來模擬我需要的東西。 – 2010-12-21 18:28:59

0

如果你只是設置按鈕的寬度會發生什麼?這樣,無論您將其設置爲標籤,它都應該保持恆定的寬度。

最可能的寬度是在updateDisplayList方法中計算的。所以,你的resize處理程序中的代碼可能會在下一個渲染事件中被重置。

+0

我想爲不同的文本按鈕有不同的寬度,所以沒有辦法獲得寬度。 – 2010-12-21 01:23:32

+0

@Peter Lee:那麼,你想要什麼行爲?如果您不想指定固定的按鈕寬度,我只會看到適合您需要的行爲:將按鈕增大到最長的文本,但永遠不會縮小...或允許文本在按鈕內換行。除了將寬度固定爲較大尺寸外,還不清楚您實際上希望使用此按鈕。 – 2010-12-21 01:40:57

+0

@Peter Lee查看getExplicitOrMeasuredHeight()和getExplicitOrMeasuredWidth()方法或measuredWidth/measuredHeight。如果將按鈕上的標籤分別設置爲measuredWidth和measuredHeight,則將寬度和高度設置爲measuredWidth和measuredHeight;它應該在標籤被移除時保留適當的尺寸。 (假設你有代碼來防止當標籤不存在時調整大小)。 – JeffryHouser 2010-12-22 13:59:44

1

您可以使用屬性minWidth和maxWidth。 minWidth指定按鈕應具有的最小寬度。和maxWidth來指定按鈕可以具有的最大寬度。