【问题标题】:Flex: Datagrid, break line in case of very long stringFlex:Datagrid,在字符串很长的情况下换行
【发布时间】:2010-12-21 08:39:40
【问题描述】:

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

如下所示: http://img.skitch.com/20091129-qt3gjneh8ksygypyjnra67auf.png

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

提前致谢

【问题讨论】:

  • 要么使用文本区域作为自定义项目渲染器而不是默认文本输入 - 或者,(事件更好 - 但取决于您的要求),为什么不使用大文本区域来显示整个聊天并继续向其附加新消息?
  • 嗯,其实这是个好主意,但是我想让每条消息都显示在这样的文本区域的新行中,也许你可以建议一种在消息之间添加换行符的方法?

标签: apache-flex actionscript-3 datagrid


【解决方案1】:

我有一段时间没用过flex了,但是我可以想到2种方法来解决这个问题:

您创建自定义渲染器,或将现有渲染器的文本字段更改为 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);
}

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

【讨论】:

    【解决方案2】:

    只需将这两个属性添加到您的 Datagrid 和 Datagrid 列。

    <mx:Datagrid variableRowHeight="true" 
    
    <mx:DataGridColumn wordWrap="true"
    

    请注意:您可能应该在此处使用 List,因为它足以显示单列消息,并且更轻量级。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-05
      • 2019-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-07
      • 1970-01-01
      • 2018-04-13
      相关资源
      最近更新 更多