【问题标题】:Dynamically adding scrollbar to flex component动态添加滚动条到 flex 组件
【发布时间】:2011-09-08 13:41:36
【问题描述】:

我已经被困在这个问题上太久了。我认为这很简单,所以我一定是误解了一些东西。任何帮助/指针表示赞赏。

我有一个 spark 表单组件,布局类似于

标签1:文本框1
标签2:文本框2 label3: textbox3 等

我希望这些显示在我的 Flash 应用程序的整个宽度上。当我缩小 Flash 播放器的宽度时,我希望出现一个滚动条。目前没有滚动条出现。

我的代码是:

<s:layout>
    <s:VerticalLayout horizontalAlign="left" paddingTop="10" paddingBottom="10"/>
</s:layout>

<s:BorderContainer borderVisible="false">
    <s:layout>
        <s:HorizontalLayout/>
    </s:layout>
    <s:Form id="custAccountForm" height="100%">
        <s:layout>
            <s:FormLayout gap="-10" paddingLeft="-15" paddingRight="-45"/>
        </s:layout>
        <s:FormHeading label="Customer/Account Details"/>
        <s:FormItem label="CustomerName">
            <s:TextInput width="100%"/>
        </s:FormItem>
        <s:FormItem label="Account">
            <s:TextInput width="100%"/>
        </s:FormItem>
        <s:FormItem label="Currency">
            <s:ComboBox id="currencyCB" width="100%"/>
        </s:FormItem>
        <s:FormItem label="Account Balance">
            <s:TextInput width="100%" maxChars="24"/>
        </s:FormItem>
    </s:Form>
</s:BorderContainer>

如何让垂直/水平滚动条仅在应用程序小于表单时出现。

谢谢

【问题讨论】:

    标签: apache-flex flex4 scroll scrollbar mxml


    【解决方案1】:

    您需要添加scroller。 Flex 4.0 Spark 架构不会像使用 Halo/MX 样式控件那样将滚动条烘焙到容器中。从概念上讲,您可以这样做:

    <s:Scroller width="200" height="200">
     <s:Group width="100%" height="100%" clipAndEnableScrolling="true">
    
     <s:BorderContainer borderVisible="false">
    ...
        <s:Form id="custAccountForm" height="100%">
    ..
        </s:Form>
     </s:BorderContainer>
     </s:Group>
    </s:Scroller>
    

    在我的使用中,我发现如果给定一个明确的高度和宽度,滚动条效果最好;如果给定的百分比高度和宽度将调整到它的内容——这意味着你没有滚动条。如果您需要处理浏览器更改大小;当容器更改时,您必须更改滚动条的高度和宽度。可能使用 updateDisplayList() 来调整大小。

    【讨论】:

    • 感谢 Flextras 的快速回复。我试图用滚动条添加你建议的内容。我想要它,以便在浏览器尺寸变小之前不会出现滚动条。 updateDisplayList 仅在启动时才被调用。当浏览器/flashplayer 改变大小时不会。我怎样才能让它做到这一点?我有代码,但不确定在这个问题中发布它的位置。感谢您迄今为止的帮助。
    • updateDisplayList 每次屏幕渲染时都会被调用。我不确定你在代码中做了什么,所以它只在启动时被调用。您应该能够在该调整大小事件中收听调整大小事件和 invalidaeDisplayList()。如果您有其他代码,您应该编辑您的原始问题并将其添加到那里。您在已删除答案中发布的代码不会调用“super.updateDisplayList()”,我相信这会导致各种问题。
    • 感谢 Flextras。我会在某个时候尝试 super.updateDisplayList() 看看是否有帮助。我还将检查您提到的无效命令。谢谢!
    • 刚刚意识到示例中的clipAndEnableSCrolling应该是clipAndEnableScrolling。滚动时带有小 c。编译器发现的小问题。解决方案确实很有效!
    猜你喜欢
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多