2009-12-01 59 views
0

我試圖做到以下幾點:創建一個寬度設置爲100%的LinkBar,並將4個LinkBut​​ton放在左側,第5個按鈕需要放置在右側。起初,我試圖將2個LinkBar控件放入HBox中,但是,這似乎破壞了Flex應用程序並導致了一個空白屏幕。然後,我嘗試在鏈接欄的dataProvider屬性中放置一個mx:Spacer,但它也不起作用,隔離區只跨越大約1個字符,並且沒有將第5個按鈕一直推到右邊。請幫忙,謝謝。如何在Flex LinkBar中創建「spacer」?

回答

2

你將需要猴子補丁這個類。 LinkBar本質上是一個水平方塊,它在子女之間自動添加間隔對象。退房的方法的updateDisplayList - 注意分隔符的大小設置有這段代碼:

if (isVertical()) 
{ 
... 
    separator.setActualSize(separatorWidth, verticalGap); 
... 
} 
else 
{ 
... 
    separator.setActualSize(horizontalGap, separatorHeight); 
... 
} 

你需要以某種方式改變這種行爲。我的建議是檢測這是否是對象中的最後一個間隔符(通過將循環迭代器「i」與子對象列表中的對象「n」進行比較),如果是,則將其寬度設置爲100%或同一事物的明確計算版本。

看起來像猴子補丁類是實現這一變化的最佳選擇,因爲任何嘗試改變實際類之外的間隔符的大小(例如在派生類中)都可能結束調用此方法並強制重置大小。

有關如何爲班級猴子打補丁的更多信息,請觀看this short presentation by Doug McCune或查看this post by Jesse Warden,他使用猴子補丁更新Flex遊標功能。

+0

謝謝,我會看看這個。但是,爲什麼我不能將兩個LinkBars並排放置?我期待這是最簡單的方法。 –

+0

不幸的是,這不起作用的原因有兩個: 1.我不能將寬度設置爲100% - 它必須是一個明確的像素數; 2.設置最後一個分隔符的寬度不會將最後一個LinkBut​​ton向右推; LinkBut​​ton保持在相同的位置,只是將垂直分隔條推向右側。 –

+0

很奇怪 - 你可以在哪裏發佈代碼?對我來說很奇怪,分隔符不會影響底層框佈局代碼,或者鏈接按鈕項將與其分開顯示。在我看來,你最快的解決方案可能是編寫你自己的 - linkBar不是太複雜的一個組件,你可以寫一個能夠在幾小時內正確實現這個spacer的程序。 –