искра Высота текстовой области подстраивается под содержимое - PullRequest
0 голосов
/ 13 апреля 2011

Я хочу настроить размер моей текстовой области в сценарии действий на основе текста, который я поместил внутри динамически, но абсолютно не знаю, как это сделать ... много искал ничего. Вот мой код, если он может помочь вам решить проблему. Я хочу настроить высоту 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;
}

1 Ответ

1 голос
/ 13 апреля 2011

Прежде всего, почему вы используете Actionscript, когда ваше приложение явно Flex? Вы можете уменьшить этот беспорядок кода на 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>
...