33

我正在创建一个 Adob​​e Flex 应用程序,并且我有一个文本控件 (mx:Text),据说当您需要多行不可编辑文本时使用它(而不是标签,它是单行不可编辑文本)。当我将浏览器窗口的大小调整为小于文本时(或在浏览器窗口已经较小的情况下加载它)时,我的文本控件不会换行。在查阅我发现的这个文档后,似乎只有在您指定以像素为单位的绝对宽度时才会发生自动换行功能。这正是我想要避免的。我希望文本换行以适合我的 Flash 对象的大小,以便它始终可见......有没有办法通过我缺少的某些属性或不同的控件来实现这一点?谢谢。

4

9 回答 9

25

我有同样的问题。在我的情况下,我有一个 mx:Text 块(应该已经包装),并且那个 mx:Text 对象嵌入在两个 mx:VBox 容器中。

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

  1. 将 'width="100%" ' 属性放入每个 VBox 容器(mx:text 所在的容器)。
  2. 将 'width="100%" ' 属性放入每个 mx:Text 对象(位于 VBox 的此嵌套中)

非常不直观,但这对我有用。

我希望这可以帮助你!

乔恩·金斯廷

于 2009-03-16T22:21:59.050 回答
5

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

<?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>

也就是说,只要有任何类型的宽度设置,相对大小(明确的数字、百分比、基于约束的锚点——例如,上、右、下、左等)应该会使文本自然换行. 这种方法不适用于您使用的布局吗?没有一些代码,很难说,但你是对的——包装确实需要在容器上设置一个与宽度相关的属性。

不过,调整大小和换行可能有点棘手,具体取决于上下文,所以如果您发现这不起作用,请尝试发布一些代码——我相信我们中的一个人将能够帮助您解决这个问题。

于 2009-02-11T19:10:19.910 回答
4

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

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

您基本上将宽度设置为组件的宽度,并将高度设置为 100% 将允许它在缩小尺寸时正确包装。

于 2010-02-11T17:57:24.420 回答
0

您可以尝试将事件处理程序添加到 的父节点Event.RESIZE,并调用 Text 对象的validateNow()方法。(也许之前有一个invalidateSize()电话。)为什么这不会自动发生,我不知道。

于 2009-02-11T18:52:55.850 回答
0

我认为应用 VBox width = "100%" 和 Text width = "100%" 是最简单的方法。注意:如果 Text 是动态生成的,别忘了做 text.percentWidth = 100

于 2009-10-23T23:05:46.687 回答
0

因此,Christian 的示例只是一个内部带有 Text 元素的应用程序,但是很容易搞砸布局。只需在其间添加一个 VBox 并且包装不起作用

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="100%" height="100%">
<mx:VBox width="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:VBox>
</mx:Application>
于 2009-11-06T21:48:33.493 回答
-1

尝试在您的文本字段中设置 htmlText="true"。

于 2011-04-27T20:28:25.890 回答
-2

我只能使用 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>
于 2011-03-11T10:19:07.300 回答
-5
render="invalidateSize();validateNow();
'component id'.mx_internal::getTextField().wordWrap=true"

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

于 2010-01-07T05:52:01.617 回答