spark文本区域高度调整为内容
Posted
技术标签:
【中文标题】spark文本区域高度调整为内容【英文标题】:spark Text area height adjust to content 【发布时间】: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;
【问题讨论】:
【参考方案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" />
</s:Application>
【讨论】:
问题是我不知道如何动态地制作mxml...我必须动态地创建这些视觉对象,这就是我想要动态地做它的原因。正如我所说,我在我的代码中固定了大小,我做了 msgLabel.percentWidth = 100 和周围的 VBox 相同,所以通常我做了我应该做的:)。但是谢谢你的回答,如果你能告诉我如何动态添加 mxml 那就完美了 这解决了我的问题,我定义了一个新组件并在我的 actionscript 代码中使用它。用这种语言学到了一个有趣的新概念,非常感谢! 如果你想动态地创建东西,你应该看看制作一个数据驱动的应用程序,并使用List
或DataGroup
之类的东西来根据自定义项目渲染器创建项目。查一下:)以上是关于spark文本区域高度调整为内容的主要内容,如果未能解决你的问题,请参考以下文章