Flex中的Strange Scroller行为

时间:2012-12-02 17:40:53

标签: actionscript-3 flex

当我执行以下应用程序时,我的Scroller会延伸到内部组的高度。

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:s="library://ns.adobe.com/flex/spark" xmlns:fx="http://ns.adobe.com/mxml/2009"> 
    <s:Scroller width="100%" height="100%" verticalScrollPolicy="on">
        <s:Group height="1400"/>
    </s:Scroller>
</s:Application>

这是我得到的:

enter image description here

我希望它与我的窗口大小相同。 你能解释一下,我做错了什么?为什么Scroller不用作视口?

1 个答案:

答案 0 :(得分:1)

通常,您希望使滚动条的高度/宽度为显式值,子项的高度/宽度为百分比。你已经反过来了。所以,像这样:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:s="library://ns.adobe.com/flex/spark" xmlns:fx="http://ns.adobe.com/mxml/2009"> 
    <s:Scroller width="100%" height="1400" verticalScrollPolicy="on">
        <s:Group height="100%"/>
    </s:Scroller>
</s:Application>

但是,这并没有解决使滚动条/组成为可用窗口宽度的问题。我会通过调整updateDisplayList()方法中的元素来做到这一点。

    <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:s="library://ns.adobe.com/flex/spark" xmlns:fx="http://ns.adobe.com/mxml/2009"> 
<fx:Script>
  protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number:void{
    super.updateDisplayList(unscaledWidth, unscaledHeight);
    myScroller.width = unscaledWidth;
    myScroller.height - unscaledHeight;
    mySCrollingGroup.width = unscaledWidth 
    mySCrollingGroup.height - unscaledHeight;
  }
</fx:Script>

        <s:Scroller verticalScrollPolicy="on" id="myScoller">
            <s:Group id="mySCrollingGroup" />
        </s:Scroller>
    </s:Application>

您可能需要调整myScrollingGroup的大小以适应滚动条的高度/宽度。或者,您可以在myScrollingGroup上使用precentHeight / percentWidth属性并将它们设置为100%。