我正在尝试使用flex实现简单的聊天应用程序。在其中我的所有聊天消息都存储为数组集合项,其中每个项都是一个字符串(对应于一个聊天消息)。我正在使用datagrid来显示所有消息。一条消息发送到datagrid的一个单元格。
这是它的样子: http://img.skitch.com/20091129-qt3gjneh8ksygypyjnra67auf.png
我想为该工具添加一个功能来处理大行文本。有没有办法实现换行,以防它很长。
提前致谢
答案 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,因为它足以显示一列消息,并且更轻量级。