2011-04-12 7 views
0

동적 스크립트 안에 텍스트를 기반으로 텍스트 영역의 크기를 조정하고 싶습니다. 그러나 동적으로 내부에 넣을 수는 있지만 절대적으로 그렇게하는 법은 모릅니다 ... 아무것도 검색하지 않았습니다. . 문제를 해결하는 데 도움이 될 수 있다면 여기에 내 코드가 있습니다. msgLabel의 높이를 내용에 맞게 조정하고 싶습니다.spark 텍스트 영역 높이 내용으로 조정

많이 고마워.).

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

먼저 애플리케이션이 명확하게 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> 
+0

문제는 내가 동적으로 ... 나는 즉석에서 이러한 시각적 객체를 생성해야 MXML을 만드는 방법을 알고하지 않는 것이, 즉이다 그것은 동적으로. 그리고 내가 말한대로 코드에서 크기를 고정 시켰습니다. msgLabel.percentWidth = 100을 사용하고 VBox에 대해 동일한 작업을 수행 했으므로 정상적으로 수행해야했습니다. :) 하지만 당신의 대답은, 당신이 나를 어떻게 dxmx mxml를 추가하는 방법을 설명 알 수 있다면 그것은 완벽 할 것입니다 – Abbadon

+0

이것은 내 문제를 해결, 내가 새로운 구성 요소를 정의하고 내 actionscript 코드에서 사용. 이 언어로 새로운 재미있는 개념을 많이 배웠습니다. – Abbadon

+0

동적으로 항목을 만들려면 사용자 정의 항목 렌더러에 따라 항목을 만들 때'List' 또는'DataGroup'과 같은 것을 사용하여 데이터 기반 응용 프로그램을 조회해야합니다. 그것을보세요 :) –