Apache flex 如何创建一个;垫片;在Flex链接栏中?

Apache flex 如何创建一个;垫片;在Flex链接栏中?,apache-flex,flex3,Apache Flex,Flex3,我试图实现以下目标:创建一个宽度设置为100%的链接栏,在左侧放置4个链接按钮,第5个按钮需要放置在右侧。起初,我试图在HBox中放置2个链接栏控件,但是,这似乎破坏了flex应用程序并导致了一个空白屏幕。然后我尝试在链接栏的dataProvider属性中放置一个mx:Spacer,但它也不起作用,该间隔符仅跨1个字符宽,并且没有将第5个按钮一直按到右边。请帮忙,谢谢。你需要为这门课打补丁。链接栏本质上是一个水平框,它自动在其子对象之间添加间隔对象。检查updateDisplayList方法-注

我试图实现以下目标:创建一个宽度设置为100%的链接栏,在左侧放置4个链接按钮,第5个按钮需要放置在右侧。起初,我试图在HBox中放置2个链接栏控件,但是,这似乎破坏了flex应用程序并导致了一个空白屏幕。然后我尝试在链接栏的dataProvider属性中放置一个mx:Spacer,但它也不起作用,该间隔符仅跨1个字符宽,并且没有将第5个按钮一直按到右边。请帮忙,谢谢。

你需要为这门课打补丁。链接栏本质上是一个水平框,它自动在其子对象之间添加间隔对象。检查updateDisplayList方法-注意分隔符的大小是用以下代码位设置的:

if (isVertical())
{
...
    separator.setActualSize(separatorWidth, verticalGap);
...
}
else
{
...
    separator.setActualSize(horizontalGap, separatorHeight);
...
}
你需要以某种方式改变这种行为。我的建议是检测这是否是对象中的最后一个间隔符(通过将循环迭代器“i”与子列表中的对象总数“n”进行比较),如果是,则将其宽度设置为100%或相同内容的显式计算版本

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


有关如何对类进行monkey补丁的更多信息,请观看或查看他在何处使用monkey补丁更新Flex cursor功能。

谢谢,我来看看这个。但是,为什么我不能并排放置两个链接栏呢?我以为这是最简单的方法。不幸的是,这不起作用有两个原因:1。我不能将宽度设置为100%——它必须是一个明确的像素数;2.设置最后一个分隔符的宽度时,不会向右按最后一个链接按钮;LinkButton保持在相同的位置,只是垂直分隔条被推到了右边。非常奇怪-你能把代码贴到什么地方吗?我觉得很奇怪,分隔符不会影响底层框布局代码,或者linkbutton项会被分开呈现。在我看来,您最快的解决方案可能是编写自己的组件-链接栏不是一个太复杂的组件,您可以编写一个能够在几个小时内正确实现此间隔的组件。我找到了一个解决方法:在布局容器中放置一个链接栏和一个单独的链接按钮。谢谢你关于猴子修补的提示。