控制哪个VBox获取滚动条

时间:2009-11-04 16:01:13

标签: flex flex3

我有以下应用程序,我试图将一个滚动条放在TabNavigator内部,最好放在最里面的Vbox上,但滚动条总是在Panel上结束。是否有某种财产可以控制这个?我认为高度= 100%会控制它,但它似乎不起作用。

示例在这里。您可以在其上查看来源: VBox Sample

无论如何,这是来源:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" viewSourceURL="srcview/index.html">
    <mx:Panel width="400" height="400">
        <mx:TabNavigator width="100%" height="100%" creationPolicy="all">
            <mx:VBox label="Tab 1" width="100%" height="100%">
                <mx:ViewStack width="100%" height="100%">
                    <mx:VBox width="100%" height="100%">
                        <mx:Text width="100%" height="500" text="This box is taller than the Panel, but the scrollbar is on the window." />
                    </mx:VBox>
                </mx:ViewStack>
            </mx:VBox>
        </mx:TabNavigator>    
    </mx:Panel>
</mx:Application>

2 个答案:

答案 0 :(得分:3)

我发现正确的解决方案是将方框上的最小高度设置为0.当未定义最小高度时,方框将尝试保持其测量高度。通过设置最小高度,你告诉方框可以缩小。

答案 1 :(得分:1)

过去我遇到过这个问题,解决方案有点不对劲,但希望这会有所帮助:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
    <mx:Panel width="400" height="400" verticalScrollPolicy="off">
        <mx:TabNavigator width="100%" height="100%">
            <mx:VBox id="container" label="Tab 1" width="100%" height="100%">
                 <mx:ViewStack width="100%" height="{container.height - 20}">
                    <mx:VBox width="100%" height="100%">
                        <mx:Text width="100%" height="500" text="This box is taller than the Panel, but the scrollbar is on the window." />
                    </mx:VBox>
                </mx:ViewStack>
            </mx:VBox>
        </mx:TabNavigator>    
    </mx:Panel>
</mx:Application>

Flex似乎在98%的时间内正确计算动态组件尺寸,但有时我们需要“按摩”逻辑。

当您查看布局层次结构时(如上所示),您只需为了数据绑定而命名父容器(在本例中为Tab1),然后使用该容器的height属性进行大小调整。 (你也没有需要在面板上明确说明verticalScrollPolicy =“off”,但是我使用if for good measure:P)

请注意,您可能需要从给定高度中减去一点,否则您的滚动条将低于组件范围;)