【问题标题】:spark Text area height adjust to contentspark文本区域高度调整为内容
【发布时间】:2011-08-04 06:21:44
【问题描述】:

我想根据我动态放入的文本在动作脚本中调整我的文本区域的大小,但绝对不知道该怎么做……搜索了很多。如果它可以帮助您解决问题,这是我的代码。我想根据内容调整 msgLabel 的高度。

非常感谢 ;)。

public function createTweet(tweet:XML, lineName:String, isTweetInList:Boolean):IVisualElement{
    var authorS:String = tweet.posterName;
    var tweetID:String = tweet.tweetID;

    //Main vertical group
    var vg:VGroup = new VGroup();
    vg.percentWidth = 100;
    if(!isTweetInList){
        //Add the new VGroup to the tweetTabHolder
        tweetTabHolder[tweetID+lineName] = vg;

        //Add the new tweetID to the tweet posted by an author
        if(tweetByLineByAuthor[authorS] == null)
            tweetByLineByAuthor[authorS] = new Dictionary();
        if(tweetByLineByAuthor[authorS][lineName] == null)
            tweetByLineByAuthor[authorS][lineName] = new ArrayList();
        tweetByLineByAuthor[authorS][lineName].addItem(tweetID);
    }

    vg.setStyle("backgroundAlpha", 0);
    vg.paddingLeft = 20;

    var sp0:Spacer = new Spacer();
    sp0.height = 10;
    vg.addElement(sp0);

    //Tweet Content
        //Author
    var hgA:HGroup = new HGroup();
    var aSpacer:Spacer = new Spacer();
    aSpacer.width = 10;
    hgA.addElement(aSpacer);
    var authorLabel:RichText = new RichText();
    authorLabel.text = authorS;
    authorLabel.setStyle("fontSize",20);
    authorLabel.setStyle("fontWeight",FontWeight.BOLD);
    authorLabel.setStyle("color",authorColor);
    authorLabel.addEventListener("click",authorClickHandler);
    authorLabel.addEventListener(MouseEvent.MOUSE_OVER,authorFocusInHandler);
    authorLabel.addEventListener(MouseEvent.MOUSE_OUT,authorFocusOutHandler);
    hgA.addElement(authorLabel);
    if(tweet.posterName == userNameLogged || isTweetInList){
        var abs1:Spacer = new Spacer();
        abs1.width = 25;
        hgA.addElement(abs1);
        hgA.addElement(createDeleteTweetButton(tweetID,vg, isTweetInList));
        var abs2:Spacer = new Spacer();
    }
    if(!isTweetInList){
        abs2.width = 4;
        hgA.addElement(abs2);
        hgA.addElement(createFavorisButton(tweetID));
    }
    vg.addElement(hgA);
        //Msg
    var hgM:HGroup = new HGroup();
    var mSpacer:Spacer = new Spacer();
    mSpacer.width = 15;
    hgM.addElement(mSpacer);
    var msgLabel:TextArea = new TextArea();
    hgM.addElement(msgLabel);
    hgM.percentWidth = 100;
    msgLabel.percentWidth = 100;
    msgLabel.text = tweet.msg;
    msgLabel.setStyle("fontSize",12);
    msgLabel.setStyle("color",msgColor);
    msgLabel.editable = false;
    msgLabel.setStyle("lineBreak", "toFit");
    vg.addElement(hgM);

    //Date
    var hgD:HGroup = new HGroup();
    var dSpacer:Spacer = new Spacer();
    dSpacer.width = 10;
    hgD.addElement(dSpacer);
    var dateLabel:Label = new Label();
    dateLabel.text = tweet.postingDate.date;
    dateLabel.setStyle("fontSize",10);
    dateLabel.setStyle("color",dateColor);
    hgD.addElement(dateLabel);
    vg.addElement(hgD);

    var sp1:Spacer = new Spacer();
    sp1.height = 10;
    vg.addElement(sp1);
    var hr:HRule = new HRule();
    hr.percentWidth = 90;
    hr.x = 20;
    vg.addElement(hr);
    return vg;
}

【问题讨论】:

    标签: apache-flex adobe components


    【解决方案1】:

    首先,当您的应用程序显然是 Flex 时,为什么还要使用 Actionscript?您可以将混乱的代码减少 2/3。另外,最后我检查了它们都调整到它们的内容,除非你指定它们的尺寸。不管怎样,这里有一个很好的例子:

    <?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">
    
        <fx:Script>
            <![CDATA[
                [Bindable] private var someText:String = "Enter long text here.";
            ]]>
        </fx:Script>
        <s:RichEditableText selectable="true" editable="false" text="{someText}" multiline="true" width="100%" />
    
    </s:Application>
    

    【讨论】:

    • 问题是我不知道如何动态地制作mxml...我必须动态地创建这些视觉对象,这就是我想要动态地做它的原因。正如我所说,我在我的代码中固定了大小,我做了 msgLabel.percentWidth = 100 和周围的 VBox 相同,所以通常我做了我应该做的:)。但是谢谢你的回答,如果你能告诉我如何动态添加 mxml 那就完美了
    • 这解决了我的问题,我定义了一个新组件并在我的 actionscript 代码中使用它。用这种语言学到了一个有趣的新概念,非常感谢!
    • 如果你想动态地创建东西,你应该看看制作一个数据驱动的应用程序,并使用ListDataGroup 之类的东西来根据自定义项目渲染器创建项目。查一下:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    相关资源
    最近更新 更多