Apache flex 如何将Flex文本控件设置为自动换行

Apache flex 如何将Flex文本控件设置为自动换行,apache-flex,text,word-wrap,Apache Flex,Text,Word Wrap,我正在创建一个AdobeFlex应用程序,我有一个文本控件(mx:Text),当您需要多行不可编辑文本(与标签相反,标签是单行不可编辑文本)时,应该使用该控件。当我将浏览器窗口的大小调整为小于文本时(或在浏览器窗口已经更小的情况下加载它),我的文本控件不会换行。在查阅我发现的内容后,似乎只有在指定绝对宽度(以像素为单位)时,才会使用换行功能。这正是我想要避免的。我想文字包装,以适应内的大小给我的Flash对象,使它始终可见。。。有没有办法通过我丢失的某些属性或可能是不同的控件来实现这一点?谢谢。

我正在创建一个AdobeFlex应用程序,我有一个文本控件(mx:Text),当您需要多行不可编辑文本(与标签相反,标签是单行不可编辑文本)时,应该使用该控件。当我将浏览器窗口的大小调整为小于文本时(或在浏览器窗口已经更小的情况下加载它),我的文本控件不会换行。在查阅我发现的内容后,似乎只有在指定绝对宽度(以像素为单位)时,才会使用换行功能。这正是我想要避免的。我想文字包装,以适应内的大小给我的Flash对象,使它始终可见。。。有没有办法通过我丢失的某些属性或可能是不同的控件来实现这一点?谢谢。

您可以尝试将事件处理程序添加到
event.RESIZE
的父节点,并调用文本对象的
validateNow()
方法。(前面可能会有一个
invalidateSize()
调用。)我说不出为什么这种情况不会自动发生。

百分比宽度和高度实际上解析为它们的像素等效值,因此使用它们应该可以实现您想要的环绕和相对大小。例如:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="100%" height="100%">
    <mx:Text width="100%" height="100%" text="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.  Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." />
</mx:Application>

也就是说,如果有任何类型的宽度设置,相对大小(显式数字、百分比、基于约束的锚定-例如,顶部、右侧、底部、左侧等)应使文本自然换行。这种方法不适用于您正在使用的布局吗?如果没有一些代码,很难判断,但您是对的——包装确实需要在容器上设置与宽度相关的属性


不过,根据上下文的不同,调整大小和包装可能会有点棘手,因此如果您发现这不起作用,请尝试发布一些代码——我相信我们中的一位将能够帮助您解决这个问题。

我也遇到了同样的问题。在我的例子中,我有一个mx:Text块(应该已包装),并且该mx:Text对象嵌入在两个mx:VBox容器中

我成功包装文本的唯一方法是执行以下两项操作:

  • 将'width=“100%”属性放入每个VBox容器(其中包含mx:text)
  • 将'width=“100%”属性放入每个mx:Text对象(位于VBox的嵌套中)
  • 非常不直观,但这对我来说是有效的

    我希望这对你有帮助


    Jon Kinsting

    我认为应用VBox width=“100%”和Text width=“100%”是最简单的方法。注意:如果文本是动态生成的,请不要忘记执行Text.percentWidth=100

    所以Christian的示例只是一个在工作中包含文本元素的应用程序,但它很容易破坏布局。只需在中间添加一个VBox,包装将不起作用:

    
    

    将此添加到您的文本组件。

    如果您试图让文本换行在MXML组件中工作,请尝试以下操作:

    <mx:Text id="testText"  
      width="{ this.width }"
      height="100%"   
      text="Your text here" />
    
    
    

    您基本上是将宽度设置为组件的宽度,并将高度设置为100%,这样可以在缩小尺寸时正确包裹组件。

    我只需使用mxml即可。结果很难看,但我能做到

    <s:Group id="propDisplay" width="100%">
        <mx:Text id="key" left="0" text="{data.key}:"/>
        <mx:Text left="{key.width}" maxWidth="{propDisplay.width - key.width}" 
                                 text="{data.value}" />
    </s:Group>
    

    尝试在文本字段中设置htmlText=“true”。

    啊哈。我也遇到了同样的问题,通过同样的方法解决了——在三个对象上显式设置宽度——外框、内框和文本对象。
    <mx:Text id="testText"  
      width="{ this.width }"
      height="100%"   
      text="Your text here" />
    
    <s:Group id="propDisplay" width="100%">
        <mx:Text id="key" left="0" text="{data.key}:"/>
        <mx:Text left="{key.width}" maxWidth="{propDisplay.width - key.width}" 
                                 text="{data.value}" />
    </s:Group>