要在AdvancedDataColumn中显示HTML格式的文本,我使用的是自定义渲染器,它是一个mx:Text对象。我正在将myText.htmlText设置为“测试文本,其实际上比列宽度长得多”。无论我设置了什么属性,文本都会在列的末尾运行。
我在dataGrid和每个单独的列上尝试了wordWrap =“true”。我也试过搞乱css并尝试将它应用到文本字段,但似乎没有任何东西出现。有没有人能够在文本对象中包装htmlText?
另外,但稍微不那么重要的是,每个标签后面都有额外的空白行,我想摆脱它。
- 编辑 - 添加了渲染器代码。
<?xml version="1.0"?>
<!-- itemrenderers/sparkmx/myComponents/SummaryRenderer.mxml -->
<s:MXAdvancedDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:s="library://ns.adobe.com/flex/spark"
textAlign="center">
<fx:Script>
<![CDATA[
import mx.controls.advancedDataGridClasses.AdvancedDataGridListData;
override public function set data(value:Object):void
{
// help for style sheets
//http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/text/StyleSheet.html
//create and initialize css
var myCSS:StyleSheet = new StyleSheet();
myCSS.setStyle("p", {textAlign:'left'});
// TODO try wordwrap here.
myCSS.setStyle("div", {textAlign:'left'});
//ensure html support and apply css to it
myText.styleSheet = myCSS;
// if the value is null, it would throw an error.
if (AdvancedDataGridListData(listData) != null) {
myText.htmlText = value[AdvancedDataGridListData(listData).dataField];
}
}
]]>
</fx:Script>
<mx:Text id="myText"/>
</s:MXAdvancedDataGridItemRenderer>
答案 0 :(得分:0)
Text组件中的HTML可能性非常有限。你无法在那里添加div标签。对于您遇到的问题 - 我想说您需要在自定义渲染器中的Text组件或AdvancedDatagridColumn上设置固定宽度。 对不起,没有告诉你关于空白的最后一个问题。你能用例子解释一下吗?
答案 1 :(得分:0)
我想出了第一部分。看起来单元格中的Text对象比单元格大,所以即使它“包裹”文本,它也认为它有足够的空间。
添加
myText.percentWidth=100;
myText.percentHeight=100;
设置数据功能解决了这个问题。