Apache flex Spark TextArea或RichText自动调整大小

Apache flex Spark TextArea或RichText自动调整大小,apache-flex,flex4,textarea,richtext,Apache Flex,Flex4,Textarea,Richtext,我在这个问题上做了很多研究,但我发现的不是过时就是不起作用 对于过去的TextFields,您可以将TextField设置为某个宽度,将wordWrap设置为true,最终会得到一个根据您添加的文本改变高度的TextField 现在我正在尝试使用Spark TextArea或RichText来实现这一点 我试过这个HeightInLines=NAN,但似乎已经过时了 我也试过这个程序: var totalHeight:uint = 10; this.validateNow(); var noOf

我在这个问题上做了很多研究,但我发现的不是过时就是不起作用

对于过去的TextFields,您可以将TextField设置为某个宽度,将wordWrap设置为true,最终会得到一个根据您添加的文本改变高度的TextField

现在我正在尝试使用Spark TextArea或RichText来实现这一点

我试过这个HeightInLines=NAN,但似乎已经过时了

我也试过这个程序:

var totalHeight:uint = 10;
this.validateNow();
var noOfLines:int = this.mx_internal::getTextField().numLines;
for (var i:int = 0; i < noOfLines; i++) 
{
     var textLineHeight:int = 
                     this.mx_internal::getTextField().getLineMetrics(i).height;
     totalHeight += textLineHeight;
}
this.height = totalHeight;
var总高度:uint=10;
这是validateNow();
var noOfLines:int=this.mx_internal::getTextField().numLines;
for(var i:int=0;i
但mx_内部不在火花组件中

我正试图用AS3而不是MXML来实现这一点。如果有人有任何建议或链接可以帮助我使用AS3解决这个问题,我将不胜感激。

这很好:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
    <s:TextArea updateComplete="event.currentTarget.heightInLines = NaN" />
</s:Application>


可以在评论中找到。您可以使用相同的
updateComplete
事件在ActionScript中执行相同的操作。

整个下午都在努力解决这个问题。但是,如果您设置RichEditableText组件的宽度而不定义其高度,它看起来会自动调整大小。

在s:TextArea上进行了相同的头部撞击,然后发现这可以完成任务:

<s:RichEditableText id="txtArea" left="0" right="0" backgroundColor="#F7F2F2"
                    change="textChanged()" />

这是我如何设置文本区域的高度,以适应在ItemRenderer中使用时的内容(例如,对于列表组件):

ItemRenderer必须设置此属性:

<s:ItemRenderer ... updateComplete="onUpdateComplete(event)>

您可以从TextArea的皮肤中删除滚动条,它将自动调整大小。您可以在这里下载完整的皮肤:

这里有一个spark文本区域的解决方案(它与mx文本区域一样工作):

var ta_高度:int;
对于(变量i:int=0;i
这似乎对我有用:

<s:TextArea id="testTextArea"
            change="testTextArea_changeHandler(event)" 
            updateComplete="testTextArea_updateCompleteHandler(event)"/>

<fx:Script>
    <![CDATA[
        protected function testTextArea_changeHandler(event:TextOperationEvent):void
        {
            testTextArea.height = RichEditableText(testTextArea.textDisplay).contentHeight + 2;
        }

        protected function testTextArea_updateCompleteHandler(event:FlexEvent):void
        {
            testTextArea.height = RichEditableText(testTextArea.textDisplay).contentHeight + 2;
        }
    ]]>
</fx:Script>


oopss。。。。在链接到的示例中,这用于在输入文本时增加文本区域。我说的是建立一个文本区域,用文本填充它,最后得到一个全尺寸的文本区域以及一个高度数字,这样我就可以调整文本字段下面的项目。非常感谢Ross,我遇到了这个问题,你的解决方案非常有效!您没有包含textChanged()函数。
var ta_height:int;
for(var i:int=0; i < StyleableTextField(myTextArea.textDisplay).numLines; i++) {
        ta_height += StyleableTextField(myTextArea.textDisplay).getLineMetrics(i).height;
}
myTextArea.height = ta_height;
<s:TextArea id="testTextArea"
            change="testTextArea_changeHandler(event)" 
            updateComplete="testTextArea_updateCompleteHandler(event)"/>

<fx:Script>
    <![CDATA[
        protected function testTextArea_changeHandler(event:TextOperationEvent):void
        {
            testTextArea.height = RichEditableText(testTextArea.textDisplay).contentHeight + 2;
        }

        protected function testTextArea_updateCompleteHandler(event:FlexEvent):void
        {
            testTextArea.height = RichEditableText(testTextArea.textDisplay).contentHeight + 2;
        }
    ]]>
</fx:Script>