2009-08-17 102 views
1

我希望我的自定義按鈕看起來像下面的按鈕示例。 更具體地說,我希望按鈕的寬度由標籤中最大單詞的寬度決定(即我的例子中的「伸長」寬度)。標籤必須包裝,而不是截斷。 而且我只需要圖標頂邊和按鈕頂邊之間的一個像素。 我已經嘗試了很多東西,但目前爲止無濟於事。我已經將horizo​​ntalGap和verticalGap減小到零並將填充減少到零。但仍然沒有。請幫忙。Flex自定義按鈕組件

這就是我現在所擁有的:

<mx:Button top="0" cornerRadius="2" paddingLeft="0" paddingRight="0" leading="0" letterSpacing="0" paddingTop="0" paddingBottom="0" verticalGap="0" horizontalGap="0" textAlign="center" labelPlacement="bottom" icon="{MyIcon}" height="60" width="75" label="Elongated Label" fontSize="10" /> 

alt text

+0

我想你會得到更好的迴應,如果你發佈的代碼不工作 – Tony 2009-08-17 23:38:22

回答

1

這並不簡單。

您需要創建自己的按鈕,

public class Mybutton extends Button {...} 

覆蓋createChildren和設置的IUITextField的自動換行用於標籤爲true。

重寫度量並使用您自己的行度量來確定該按鈕的寬度。如果你的措施是正確的,那麼按鈕就會正確放置。

+0

正是我所做的。之後得到你的答案。但是,謝謝。 – CodeQrius 2009-08-18 14:38:05

0

我沒有在那一刻我前面的一個開發環境,但這些方針的東西應該工作:

  1. 將Label的truncateToFit屬性設置爲false(或者使用wordWrap設置爲true的TextField - 我認爲這應該儘可能地保留單詞)。

我還沒有需要使用任何上述的,但希望你還沒有嘗試過,因爲這將是一個簡單的解決方案,你的問題的一部分。沒有任何代碼,我不知道爲什麼填充不起作用,但也許這與截詞這個詞有關。

作爲一種替代方案,爲什麼不使用Button,爲圖標嵌入或指定了一個源,並通過指定對象的labelPlacement屬性來決定在哪裏放置文本?

編輯:由於沒有關於wordWrap的按鈕的屬性,因爲他們會建議在Adobe Flex論壇中針對基於內容的大小進行大小調整,而這些內容沒有自動功能,因此您必須找到最長的單詞調整按鈕的寬度(即:在creationComplete事件中)。試驗,以找到字體像素比率將是我最好的選擇(或者你可以使用一個寬字體,所有的字符被賦予相同的空間,從而簡化估計):

creationComplete="event.target.width=returnMyWidth();" 

至於填充,它可能與您設置的自定義寬度有關,或者可能是通過包含圖像自動設置填充來設置填充 - 我不太確定,所以如果有人可以根據此經驗提供評論,那將是一件好事。