如何在Flex LinkBar中创建“spacer”?

时间:2009-12-01 16:05:34

标签: flex flex3

我试图实现以下目的:创建宽度设置为100%的LinkBar,并在左侧放置4个LinkBut​​tons,并将第5个按钮放在右侧。起初,我试图将2个LinkBar控件放在HBox中,但是,这似乎破坏了flex应用程序并导致了一个空白屏幕。然后我尝试在链接栏的dataProvider属性中放置一个mx:Spacer,但它也不起作用,spacer只跨越大约1个字符宽,并没有将第5个按钮一直向右推。请帮助,谢谢。

1 个答案:

答案 0 :(得分:2)

你需要为此修补课程。 LinkBar本质上是一个水平框,可以在其子代之间自动添加间隔对象。查看updateDisplayList方法 - 请注意,使用以下代码设置分隔符的大小:

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

您需要以某种方式更改此行为。我的建议是检测这是否是对象中的最后一个spacer(通过将循环迭代器“i”与子列表中的对象“n”的总数进行比较),如果是,则将其宽度设置为100%或同一事物的明确计算版本。

似乎猴子修补类是实现此更改的最佳选择,因为任何尝试更改实际类之外的间隔符的大小(例如,在派生类中)都可能最终调用此方法方法和强制重置大小。

有关如何修补课程的更多信息,请观看this short presentation by Doug McCune,或查看this post by Jesse Warden他使用猴子补丁更新Flex光标功能的地方。