Flex:Datagrid,在非常长的字符串的情况下断行

时间:2009-11-29 08:09:48

标签: flex actionscript-3 datagrid

我正在尝试使用flex实现简单的聊天应用程序。在其中我的所有聊天消息都存储为数组集合项,其中每个项都是一个字符串(对应于一个聊天消息)。我正在使用datagrid来显示所有消息。一条消息发送到datagrid的一个单元格。

这是它的样子: http://img.skitch.com/20091129-qt3gjneh8ksygypyjnra67auf.png

我想为该工具添加一个功能来处理大行文本。有没有办法实现换行,以防它很长。

提前致谢

2 个答案:

答案 0 :(得分:1)

我暂时没有使用过flex,但我可以想出两种方法来解决这个问题:

您可以创建自定义渲染器,或将现有渲染器的文本字段更改为multiline = true,wordWrap和autoSize = TextFieldAutoSize.LEFT。

您可以尝试通过设置labelFunction来逃避。类似的东西:

//assuming an item has a user and a message property, your might be called something else
private function chopString(item:Object):String{
   var fullMess:String = item.user + " > " + item.message;
   if(fullMess.length > 30) fullMess.substr(0,30) + "\n" + fullMess.substr(0,31);
}

这是粗略的代码,你应该测试并调整它,但我希望这个想法是可读的。 HTH

答案 1 :(得分:0)

只需将这两个属性添加到Datagrid和Datagrid列即可。

<mx:Datagrid variableRowHeight="true" 

<mx:DataGridColumn wordWrap="true"

请注意:你应该在这里使用List,因为它足以显示一列消息,并且更轻量级。