Flex3中文本的流畅布局

时间:2009-01-20 15:00:56

标签: flex user-interface text layout flex3

在我的Flex3应用程序中,我有一些浮动窗口,其中包含可变数量的文本。窗口是用户可调整大小的。目前,虽然我可以调整窗口的大小,但是当窗口调整大小时,我无法在窗口的TextArea中获取文本以重新流动。我发现博客帖子中有TextArea中存在一个大小错误,这意味着设置文本内容不会正确地重新调整TextArea的大小,以及建议的解决方法。在我的例子中,内容保持不变,但容器的几何形状发生了变化。似乎正在发生的事情是TextArea在首次渲染时采用固定大小,并且没有调整容器大小的数量会改变它。任何人都可以建议在Flex中创建流畅文本区域的方法吗?

伊恩

4 个答案:

答案 0 :(得分:0)

我找到了fluid windows的一个很好的例子,请访问它。它们也提供了源代码,因此您可能会有更好的想法。

http://examples.adobe.com/flex3/devnet/dashboard/main.html

答案 1 :(得分:0)

您可以尝试Adobe的Text Layout Framework: http://labs.adobe.com/technologies/textlayout/

答案 2 :(得分:0)

我可以对此嗤之以鼻......但不要笑...... 我不确定您是否需要使用特定容器,但无论如何,请将宽度和高度设置为100%并使用Grid> GridRow和GridItem可以调整文本控件的大小和大小,您可以指定表格的宽度,或者像使用Flex中的HTML表格一样使用它来操纵控件和容器的大小....

希望有所帮助...

答案 3 :(得分:0)

通过将textArea的宽度绑定到其容器的宽度,您可以设法保留边距和边框,而不必处理百分比。
此外,每次更改父级的大小时,都会调整textArea的大小。
我在考虑这样的事情:

<fx:Script>
    <![CDATA[
        import spark.layouts.supportClasses.LayoutBase;

        protected function onButtonClicked(event:MouseEvent):void
        {
            currentState = (event.target.selected ? 'largeState' : 'smallState');
        }

    ]]>
</fx:Script>
<s:TitleWindow id="window" width="300" height="200">
    <s:TextArea width="{window.width - 10}" height="{window.height - 60}" 
        text="{IMyConsts.LOREMIPSUM}" borderVisible="false" />
    <s:ToggleButton id="btnEffect" bottom="5"  click="onButtonClicked(event)"
        label="{btnEffect.selected ? 'Go smaller' : 'Go larger'}" />
</s:TitleWindow>
<s:states>
    <s:State name="smallState" />
    <s:State name="largeState" />
</s:states>
<s:transitions>
    <s:Transition fromState="smallState" toState="*">
        <s:Resize target="{window}" widthTo="400" heightTo="300" />
    </s:Transition>
    <s:Transition fromState="largeState" toState="*">
        <s:Resize target="{window}" widthTo="300" heightTo="250" />
    </s:Transition>
</s:transitions>